Подтвердить что ты не робот

Как добавить несколько условий теста в выражение атрибута 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> в выражении атрибута соответствия

?

4b9b3361

Ответ 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>