我遇到了 xsl:templates 和 xsl:call-template 标签的问题。也许这是缺乏理解,但这是我想要做的......
如果我有一个在“/*”上匹配的模板,并且我需要从需要其他文档上下文的封闭模板中调用其他模板,那么最有效的方法是什么?
<xsl:template match="/*">
<xsl:call-template name="header">
<xsl:with-param name="headerContext" select="./[1]"/>
</xsl:call-template>
<xsl:call-template name="body">
<xsl:with-param name="bodyContext" select="*/*/[1]"/>
</xsl:call-template>
<xsl:template>
我在调用 header 和 body 模板时使用 xsl:with-param 以便我可以覆盖封闭模板中的 match="/*" ,但是当我这样做时,输出会变得混乱。如果我注释掉对“header”模板的调用,则正文模板可以正常工作,反之亦然,但是从主模板调用两者,如您在上面的示例中所见,会使它们的行为异常。标题和正文模板需要选择文档的不同部分,这就是我选择使用 w0th-param 的原因,但我认为它甚至不起作用。
我应该改用应用模板吗?