XSL IF测试存储在变量中的条件?

时间:2013-09-30 16:42:38

标签: xml xslt xslt-1.0

我有一个递归模板,可以构建复杂的OR测试条件。其结果存储在$filtercriteria变量中,产生值:

contains(@Category,'abc') or contains(@Category,'def')

如何在XSL IF语句中使用存储在变量中的测试条件?

我希望将$filtercriteria的文字值评估为测试条件:

<xsl:if test="$filtercriteria">
    Do something...
</xsl:if>

应翻译为:

<xsl:if test="contains(@Category,'abc') or contains(@Category,'def')">
    Do something...
</xsl:if>

2 个答案:

答案 0 :(得分:1)

使用纯XSLT 1.0和2.0,您无法将XPath表达式构造为字符串并对其进行评估。为此,您需要http://www.exslt.org/dyn/functions/evaluate/这样的扩展程序,或者您需要一个带有xsl:evaluate http://www.w3.org/TR/xslt-30/#element-evaluate的XSLT 3.0处理器。

答案 1 :(得分:0)

当我需要xsl:evaluate但扩展或XSLT 3.0不是选项时,我会使用meta并编写XSLT来生成新的XSLT,它本身包含组合的语句或表达式。