我想基于xsl样式表的入站参数调用模板。
使用name属性中的参数失败,因为$在上下文中是非法的。这是否意味着我必须使用xsl:选择完成此操作?
答案 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。