xslt - 覆盖 XSLT 中的命名模板

标签 xslt overriding

我有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 个模板怎么办?我会收到错误,因为它不会被调用。

最佳答案

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

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

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

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

关于xslt - 覆盖 XSLT 中的命名模板,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19837204/

相关文章:

xslt - XSL 检查参数长度并做出选择

xml - XSLT:如何过滤节点

xml - 用带有 xslt 的字符串替换字符串

python - 嵌套函数是否存在等效的覆盖?

xslt - XSL : Include some ASCII control chars when method ="text"

xml - XSLT 问题。当原始 XML 在单独的部分中有字段标签时,如何将它们与数据配对?

java - 是否可以在重写的方法中使用专门的参数?

java - 静态方法重新定义规则

ios - 如何在 if else 语句中插入覆盖函数

node.js - 仅覆盖 Node 中类的构造函数