我可以使用参数来定义xsl:key吗?

时间:2012-12-19 11:03:24

标签: xslt key grouping

我想为分组定义一个xsl:key。但我希望它是通用的,以便我可以传递参数。这有可能吗? 我想要这样的事情:

<xsl:key name="key1" match="$matchnode" use="$usenode" />

但它不起作用。我可以获得相同的行为吗?

1 个答案:

答案 0 :(得分:0)

在XSLT 1.0中,模式不能引用全局变量;在XSLT 2.0中他们可以。所以在2.0中你可以使用

match="*[name()=$matchnode]"

假设这是您的假设语法的预期含义。同样,你可以使用

use="*[name=$usenode]"

当然这不是完全通用的,因为它要求use表达式是子元素;例如,它不允许属性。要使它完全动态化,你需要一个扩展名,例如saxon:evaluate(),它允许在运行时从字符串构造XPath表达式。