4

我有 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 个模板呢?我会得到错误,因为它会被调用。

4

1 回答 1

2

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

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

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

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

于 2014-01-02T21:10:51.587 回答