我有一个递归模板,可以构建复杂的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>
答案 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,它本身包含组合的语句或表达式。