【发布时间】:2009-03-14 22:42:25
【问题描述】:
我想在 XSLT 中创建一个主模板,它可以存储在一个单独的文件中。所有其他页面样式表都使用 xsl:import 共享它。
master.xslt
<xsl:template match="Page">
<html>
<head>
</head>
<body>
<call-template name="Content"/>
</body>
</html>
</xsl:template>
<xsl:stylesheet>
page.xslt
<xsl:stylesheet>
<xsl:import href="master.xslt"/>
<xsl:template match="/">
<apply-templates match="Page"/>
</xsl:template>
<xsl:template name="Content">
... apply something page-specific
</xsl:template>
</xsl:stylesheet>
page.xml
<Page>
... something page-specific
</Page>
我可以改进这个解决方案吗?
- 我不能从主样式表开始,因为我需要 xsl:import 一切。
- 我不希望 master.xslt 在每个特定页面上都包含引用。
另一个决定(违反 xslt 精神)可能是这样的:
master.xslt
<xsl:template name="masterHead">
<html>
<head>
</head>
<body>
</xsl:template>
<xsl:template name=masterEnd>
</body>
</html>
</xsl:template>
</xsl:stylesheet>
page.xslt
<xsl:stylesheet>
<xsl:import href="master.xslt"/>
<xsl:template match="/">
<call-template name=masterHead>
... apply something page-specific
<call-template name=masterEnd/>
</xsl:template>
</xsl:stylesheet>
我们不需要任何通用根<Page> 元素。
【问题讨论】:
标签: xslt