1

我有一个构建复杂 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>
4

2 回答 2

1

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

于 2013-09-30T17:04:00.643 回答
0

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

于 2013-09-30T21:40:38.927 回答