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