在XSLT中覆盖命名模板

时间:2013-11-07 13:27:33

标签: xslt override

我的meta.xsl包含元数据 我有电话模板:

<xsl:call-template name="og-type" />

模板位于meta.xsl中(适用于所有页面):

<xsl:template name="og-type">
 <meta property="og:type" content="website"></meta>
</xsl:template>

问题是如何覆盖此模板,我需要在Articles.xsl中使用覆盖模板(这仅适用于文章页面)。

<xsl:template name="og-type">
 <meta property="og:type" content="article"></meta>
</xsl:template>

是的我可以在Mainpage.xsl中放置模板的第一个变体,但是如果它还有10个模板呢?我会得到错误,因为它什么都不会被召唤。

1 个答案:

答案 0 :(得分:2)

如果要在将基本样式表导入另一个样式表时静态覆盖模板,则优先级或模式可能是最佳答案。优先级实际上具有重要性&#34;内置因子,因此导入样式表的版本应始终是默认选择的版本,除非优先级或模式覆盖该选项。

http://www.w3.org/TR/xslt#conflict

如果您在特定条件下处理时只想要不同的行为,那么听起来您想要将变体模板与XSLT模式相关联,并且在该点之上的模板之一处具有逻辑,以识别哪个案例是相关的,发出调用模板,切换到适当的模式。

http://www.w3.org/TR/xslt#modes