我试图重复使用XSL模板,并将其他模板放在此模板中多次.
这是我的代码示例:
<xsl:template name="wrapper">
<div>
<xsl:apply-templates/>
</div>
</xsl:template>
<xsl:template name="template1"></xsl:template>
<xsl:template name="template2"></xsl:template>
Run Code Online (Sandbox Code Playgroud)
所以,现在我想在模板'wrapper'中应用模板1和模板2,就像这样(我知道这不是正确的代码,但想法就在那里):
<xsl:template name="template1">
<xsl:template match="wrapper">
<!--code here-->
</xsl:template>
</xsl:template>
<xsl:template name="template2">
<xsl:template match="wrapper">
<!--code here-->
</xsl:template>
</xsl:template>
Run Code Online (Sandbox Code Playgroud)
任何有关这方面的帮助都会受到赞赏.
将模板定义嵌套到另一个模板定义中在语法上是非法的.
根据W3C XSLT(1.0和2.0)规范,xsl:template必须是top元素的子元素xsl:stylesheet.
这意味着样式表模块中的所有模板都必须是兄弟模板.
调用 命名模板的方法 是使用如下xsl:call-template指令:
<xsl:call-template name="someTemplateName">
<!-- Possibly place one or more `xsl:with-param` elements here -->
</xsl:call-template>
Run Code Online (Sandbox Code Playgroud)
但是,请注意:
这是一种很好的风格,更符合XSLT的精神,使用未命名的模板(具有match属性)并使用xsl:apply-templates指令选择最佳匹配模板.
SO XSLT问题的大部分答案都证明了它的用法xsl:apply-templates.