Как добавить несколько условий теста в выражение атрибута test в теге <xsl: if>
Есть ли возможность включить несколько условий в выражение 'test' в теге <xsl:if>
XSLT, например
<xsl:if test="$var='ab' | $var='bc' | $var='ca' ">
</xsl:if>
Я получаю сообщение об ошибке как
"Выражение должно быть оценено до node -set".
Есть ли возможность закодировать такие множественные условия в <xsl:if>
Tag?
Может кто-нибудь объяснить, как мы можем добиться этой проверки нескольких условий для следующих тегов в
<xsl:if>
в выражении атрибута теста
<xsl:for-each>
в выражении выбора атрибута
<xsl:template>
в выражении атрибута соответствия
?
Ответы
Ответ 1
<xsl:if test="$var='ab' | $var='bc' | $var='ca' ">
Это неверно - вы используете оператор объединения XPath |
по логическим значениям.
Решение: используйте оператор XPath or
:
<xsl:if test="$var='ab' or $var='bc' or $var='ca' ">
Вышеописанное выражение XPath (значение атрибута test
) может быть оптимизировано, так что будет сделано только одно сравнение и не требуется or
:
<xsl:if test="contains('|ab|bc|ca|', concat('|', $var, '|'))">
Ответ 2
В XSLT 2.0 или выше вы можете протестировать последовательность строк:
<xsl:if test="$var=('ab','bc','ca')">...</xsl:if>