Musi być opakowany w <xsl: choose>, ponieważ jest to kiedy. I małe litery „i”.
<xsl:choose><xsl:whentest="4 < 5 and 1 < 2"><!-- do something --></xsl:when><xsl:otherwise><!-- do something else --></xsl:otherwise></xsl:choose>
Podobnie jak xsl: if instrukcje, xsl: kiedy elementy mogą mieć bardziej złożoną zawartość między swoimi znacznikami początkowymi i końcowymi - na przykład elementy wyników literału, elementy xsl: element, a nawet xsl: if i xsl: wybierz elementy - do dodania drzewo wyników. Ich wyrażenia testowe mogą również wykorzystywać wszystkie sztuczki i operatory, których może używać atrybut test elementu xsl: if, takie jak and, or i wywołania funkcji, do tworzenia bardziej złożonych wyrażeń boolowskich.
Może to oczywiste dla xslt-professional, ale dla mnie na poziomie początkującym / średniozaawansowanym to mnie zdziwiło. Chciałem zrobić dokładnie to samo, ale musiałem przetestować wartość czasu odpowiedzi z pliku XML zamiast zwykłej liczby. Podążając za tym wątkiem, spróbowałem tego:
<xsl:whentest="responsetime/@value >= 5000 and responsetime/@value <= 8999">
co spowodowało błąd. To działa:
<xsl:whentest="number(responsetime/@value) >= 5000 and number(responsetime/@value) <= 8999">
Jednak naprawdę nie rozumiem, dlaczego to nie działa bez number (). Czy to możliwe, że bez parametru number () wartość jest traktowana jako ciąg znaków i nie można porównywać liczb z łańcuchem?
W każdym razie, mam nadzieję, że zaoszczędzi to komuś dużo czasu na szukaniu ...
Odpowiedzi:
Niezupełnie, AND musi być zapisane małymi literami.
źródło
Musi być opakowany w <xsl: choose>, ponieważ jest to kiedy. I małe litery „i”.
źródło
Z XML.com :
źródło
Może to oczywiste dla xslt-professional, ale dla mnie na poziomie początkującym / średniozaawansowanym to mnie zdziwiło. Chciałem zrobić dokładnie to samo, ale musiałem przetestować wartość czasu odpowiedzi z pliku XML zamiast zwykłej liczby. Podążając za tym wątkiem, spróbowałem tego:
co spowodowało błąd. To działa:
Jednak naprawdę nie rozumiem, dlaczego to nie działa bez number (). Czy to możliwe, że bez parametru number () wartość jest traktowana jako ciąg znaków i nie można porównywać liczb z łańcuchem?
W każdym razie, mam nadzieję, że zaoszczędzi to komuś dużo czasu na szukaniu ...
źródło