Ответы:
Он должен быть заключен в <xsl: choose>, поскольку это когда. И строчные буквы «и».
<xsl:choose>
<xsl:when test="4 < 5 and 1 < 2" >
<!-- do something -->
</xsl:when>
<xsl:otherwise>
<!-- do something else -->
</xsl:otherwise>
</xsl:choose>
С XML.com :
Подобно инструкциям xsl: if, xsl: when элементы могут иметь более сложное содержимое между их начальными и конечными тегами - например, буквальные элементы результата, элементы xsl: element или даже элементы xsl: if и xsl: choose - для добавления к результирующее дерево. Их тестовые выражения также могут использовать все уловки и операторы, которые может использовать атрибут xsl: if элемента test, такие как and, or и вызовы функций, для построения более сложных логических выражений.
Может быть, для xslt-профессионала это не проблема, но для меня на начальном / среднем уровне это озадачило меня. Я хотел сделать то же самое, но мне пришлось протестировать значение времени отклика из xml вместо простого числа. Следуя этой теме, я попробовал это:
<xsl:when test="responsetime/@value >= 5000 and responsetime/@value <= 8999">
что вызвало ошибку. Это работает:
<xsl:when test="number(responsetime/@value) >= 5000 and number(responsetime/@value) <= 8999">
Не совсем понимаю, почему это не работает без number (). Может ли быть, что без number () значение обрабатывается как строка, и вы не можете сравнивать числа со строкой?
В любом случае, надеюсь, это избавит кого-то от многих поисков ...