Я хотел бы создать мастер-шаблон в 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 all.
- Я не хочу, чтобы 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>
нам не нужен общий элемент root <Page>
.