重用嵌套的XSL模板

Rin*_*nux 1 xslt

我试图重复使用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)

任何有关这方面的帮助都会受到赞赏.

Dim*_*hev 8

将模板定义嵌套到另一个模板定义中在语法上是非法的.

根据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.