如何在<xsl:if>标记的'test'属性表达式中添加多个测试条件

Use*_*5.5 29 xslt xpath

是否有可能在<xsl:if>XSLT标签中的'test'属性表达式中包含多个条件

<xsl:if test="$var='ab' | $var='bc' | $var='ca' ">
</xsl:if>
Run Code Online (Sandbox Code Playgroud)

我收到一个错误,因为"必须将表达式计算到节点集".

是否有可能在<xsl:if>Tag中编码这样的多个条件?

任何人都可以解释我们如何实现以下标签的多重条件验证

<xsl:if> 在测试属性表达式中

<xsl:for-each> 在select属性表达式中

<xsl:template> 在match属性表达式中

Dim*_*hev 42

<xsl:if test="$var='ab' | $var='bc' | $var='ca' ">
Run Code Online (Sandbox Code Playgroud)

这是错误的 - 您在布尔值上使用XPath 联合运算符|.

解决方案:使用XPath or运算符:

<xsl:if test="$var='ab' or $var='bc' or $var='ca' ">
Run Code Online (Sandbox Code Playgroud)

test可以优化上面的XPath表达式(属性的值),这样只进行一次比较而不or需要:

<xsl:if test="contains('|ab|bc|ca|', concat('|', $var, '|'))">
Run Code Online (Sandbox Code Playgroud)

  • 确保它们是小写"和"/"或" - 大写不起作用. (4认同)

Dan*_*ley 6

在 XSLT 2.0 或更高版本中,您可以针对一系列字符串进行测试:

<xsl:if test="$var=('ab','bc','ca')">...</xsl:if>
Run Code Online (Sandbox Code Playgroud)