我有一个生成 XHTML 的 XSLT 1.0(2.0 不是一个选项)样式表。根据参数,它可以生成完整的 XHTML 有效文档或只是一个<div>...</div>
片段,用于包含在 Web 页面中。
我的问题是在这两种情况下产生不同的 XML 声明。对于独立页面,我需要:
<xsl:output doctype-public="-//W3C//DTD XHTML 1.0 Strict//EN"
doctype-system="http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"/>
对于<div>
一个:
<xsl:output omit-xml-declaration="yes"/>
但<xsl:output>
不能包含在<xsl:if>
. 它只能是 的直接子代<xsl:stylesheet>
。
我看到的唯一解决方案是创建一个包含大多数模板的样式表,然后是两个小的“包装器”,右边<xsl:output>
是<xsl:import>
主样式表。
我一直在寻找更好的主意,但显然没有。根据 Andrew Hare 和 jelovirt 的建议,我编写了两个“驱动程序”,两个简单的样式表,分别调用正确<xsl:output>
的样式表和主样式表。这是这些驱动程序之一,用于独立 HTML 的驱动程序:
<?xml version="1.0" encoding="us-ascii"?>
<!-- This file is intended to be used as the main stylesheet, it creates a
standalone Web page.
-->
<xsl:stylesheet
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
version="1.0">
<xsl:import href="traceroute2html.xsl"/>
<xsl:param name="standalone" select="'true'"/>
<xsl:output doctype-public="-//W3C//DTD XHTML 1.0 Strict//EN"
doctype-system="http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"/>
</xsl:stylesheet>