2011-09-19 109 views
2

我想根据xsl样式表的入站参数调用模板。xsl:名称由参数提供的calltemplate

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

+0

是的,我相信是的。我的意思是在XPath 2.0中,可以使用内联“if”在用户定义函数之间进行选择,但只适用于有限的情况。 – LarsH

回答

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]"> 

,并通过上下文项目为一个参数如果需要。但是,如果我们更了解您正在尝试解决的问题,我们可能会提出更好的解决方法。

+0

我试图保留模板库中的所有表单,然后根据请求输出特定的表单,而不必在每次添加新的支持表单时更新选择。尽管这样做有效,但“下一个人”理解起来似乎有点困难。 –