XSLTにマスターテンプレートを作成したいと思います。これは別のファイルに保存することができます。他のすべてのページスタイルシートは、xsl:importを使用してそれを共有します。マスタースタイルシートをXSLTで共有する
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が必要になりますので、私は、マスタースタイルシートから起動することはできません。すべてをインポートします。
- 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>
要素。
Aaが主導的/実際には良い決断ではありません。 @match属性の値が「一致パターン」であり、そのようにitdoesn't絶対XPath式である必要があります。テンプレートが適用されているノードにのの(動的な)文脈によって決定されることを選択します。 –
@Dimitre:あなただけそれがルートページ要素を一致させたい場合は、それは良いアイデアです。 –