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


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

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

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: когда элементы могут иметь более сложные содержание между их началом-и конечные теги-например, литеральный результат элементы, элементом xsl:элемент, или даже xsl: если и xsl: выберите элементы-к добавьте в результирующее дерево. Их испытание выражения также могут использовать все трюки и операторы, которые xsl:если атрибут 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">

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

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