Подходит ли это для случаев, когда 4 <5 и 1 <2?
<xsl:when test = "4 < 5 AND 1 < 2" >
<!-- do something -->
</xsl:when>





От XML.com:
Like xsl:if instructions, xsl:when elements can have more elaborate contents between their start- and end-tags—for example, literal result elements, xsl:element elements, or even xsl:if and xsl:choose elements—to add to the result tree. Their test expressions can also use all the tricks and operators that the xsl:if element's test attribute can use, such as and, or, and function calls, to build more complex boolean expressions.
Не совсем так, AND должно быть в нижнем регистре.
<xsl:when test = "4 < 5 and 1 < 2">
<!-- do something -->
</xsl:when>
Он должен быть заключен в <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>
Может быть, для 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 () значение обрабатывается как строка, и вы не можете сравнивать числа со строкой?
В любом случае, надеюсь, это избавит кого-то от многих поисков ...
Операторы и приоритет: msdn.microsoft.com/en-us/library/ms256081(VS.85).aspx