Odpowiedzi:
Musi być opakowany w <xsl: choose>, ponieważ jest to kiedy. I małe litery „i”.
<xsl:choose>
<xsl:when test="4 < 5 and 1 < 2" >
<!-- do something -->
</xsl:when>
<xsl:otherwise>
<!-- do something else -->
</xsl:otherwise>
</xsl:choose>
Z XML.com :
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:when test="responsetime/@value >= 5000 and responsetime/@value <= 8999">
co spowodowało błąd. To działa:
<xsl:when test="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 ...