Можете ли вы поместить два условия в атрибут теста xslt?

правильно ли это, когда 4

<xsl:when test="4 &lt; 5 AND 1 &lt; 2" >
<!-- do something -->
</xsl:when>

4 ответов


не совсем, и должно быть строчным.

<xsl:when test="4 &lt; 5 and 1 &lt; 2">
<!-- do something -->
</xsl:when>

он должен быть завернут в , так как это когда. И строчные буквы "и".

<xsl:choose>
   <xsl:when test="4 &lt; 5 and 1 &lt; 2" >
   <!-- do something -->
   </xsl:when>
   <xsl:otherwise>
   <!-- do something else -->
   </xsl:otherwise>
</xsl:choose>

от XML.com:

Как xsl: если инструкции, xsl: когда элементы могут быть более сложными содержание между их началом - и end-tags-например, литеральный результат elements, xsl: элементы элементов или даже xsl: if и xsl: выберите элементы-to добавьте в дерево результатов. Их испытание выражения также могут использовать все трюки и операторы, которые xsl: if атрибут test элемента может использовать, например как и, или, и вызовы функций, строить много комплексное булево выражения.


может быть, это без проблем для XSLT-профессионала, но для меня на начальном/среднем уровне это меня озадачило. Я хотел сделать то же самое, но мне пришлось протестировать значение responsetime из xml вместо простого числа. Следуя этой теме, я попробовал это:

<xsl:when test="responsetime/@value &gt;= 5000 and responsetime/@value &lt;= 8999"> 

что вызвало ошибку. Это работает:

<xsl:when test="number(responsetime/@value) &gt;= 5000 and number(responsetime/@value) &lt;= 8999">

на самом деле не понимаю, почему он не работает без number (). Может быть, без number () обрабатывается значение как строка, и вы не можете сравнить числа со строкой?

в любом случае, надеюсь, что это спасет кого-то много поиска...