是否有可能在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>
答案 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>