xsl:calltemplate,其名称由参数提供

时间:2011-09-19 15:49:07

标签: xslt

我想基于xsl样式表的入站参数调用模板。

使用name属性中的参数失败,因为$在上下文中是非法的。这是否意味着我必须使用xsl:选择完成此操作?

2 个答案:

答案 0 :(得分:3)

如果要调用动态选择的模板,通常可以使用xsl:apply-templates而不是xsl:call-template来完成。一种非常通用的方法是更改​​每个

<xsl:template name="n">

<xsl:template name="n" match="xsl:template[@name='n']">

然后更改您的无效

<xsl:call-template name="$x"/>

到合法的

<xsl:apply-templates select="document('')/*/xsl:template[@name=$x]">

如果需要,将上下文项作为参数传递。

但是,如果我们对您要解决的问题有更多了解,我们或许可以建议更好的解决方法。

答案 1 :(得分:1)

除非你使用像Saxon 9的商业版那样的XSLT处理器,你有http://www.saxonica.com/documentation/extensions/instructions/call-template.xml这样的扩展指令,否则你需要使用xsl:choose。