Можете ли вы поместить два условия в атрибут теста xslt?
правильно ли это, когда 4
<xsl:when test="4 < 5 AND 1 < 2" >
<!-- do something -->
</xsl:when>
4 ответов
не совсем, и должно быть строчным.
<xsl:when test="4 < 5 and 1 < 2">
<!-- do something -->
</xsl:when>
он должен быть завернут в
<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: если инструкции, xsl: когда элементы могут быть более сложными содержание между их началом - и end-tags-например, литеральный результат elements, xsl: элементы элементов или даже xsl: if и xsl: выберите элементы-to добавьте в дерево результатов. Их испытание выражения также могут использовать все трюки и операторы, которые xsl: if атрибут test элемента может использовать, например как и, или, и вызовы функций, строить много комплексное булево выражения.
может быть, это без проблем для XSLT-профессионала, но для меня на начальном/среднем уровне это меня озадачило. Я хотел сделать то же самое, но мне пришлось протестировать значение responsetime из 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 () обрабатывается значение как строка, и вы не можете сравнить числа со строкой?
в любом случае, надеюсь, что это спасет кого-то много поиска...