34

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

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

我收到一个错误,因为“必须将表达式评估为节点集”。

有没有可能在<xsl:if>标签中编码这样的多个条件?

谁能解释我们如何为以下标签实现这种多条件验证

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

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

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

?

4

2 回答 2

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

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

解决方案:使用 XPathor运算符:

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

上面的 XPath 表达式(test属性的值)可以优化,这样就只做一个比较,noor是必须的:

<xsl:if test="contains('|ab|bc|ca|', concat('|', $var, '|'))">
于 2012-05-10T11:39:23.483 回答
6

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

<xsl:if test="$var=('ab','bc','ca')">...</xsl:if>
于 2016-12-07T23:17:21.363 回答