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

时间:2012-05-10 11:33:57

标签: xslt xpath

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

<xsl:if test="$var='ab' | $var='bc' | $var='ca' ">
</xsl:if>

我收到错误 “必须将表达式计算到节点集”。

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

任何人都可以解释我们如何在

中为以下标签实现这种多重条件验证 测试属性表达式中的

<xsl:if>

选择属性表达式

中的

<xsl:for-each> 匹配属性表达式

中的

<xsl:template>

2 个答案:

答案 0 :(得分:39)

<xsl:if test="$var='ab' | $var='bc' | $var='ca' ">

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

解决方案:使用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, '|'))">

答案 1 :(得分:2)

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

<xsl:if test="$var=('ab','bc','ca')">...</xsl:if>