【发布时间】:2014-05-12 18:59:05
【问题描述】:
我正在使用在 xml 内容上运行的 XSLT 转换创建一个 HTML。 xml 内容是动态的,因此生成的 HTML 可以分布在多个页面上。我想在 HTML 的每个输出页面中包含页眉和页脚。有没有办法进行这种 XSLT 转换或 HTML 技巧?
【问题讨论】:
我正在使用在 xml 内容上运行的 XSLT 转换创建一个 HTML。 xml 内容是动态的,因此生成的 HTML 可以分布在多个页面上。我想在 HTML 的每个输出页面中包含页眉和页脚。有没有办法进行这种 XSLT 转换或 HTML 技巧?
【问题讨论】:
XSL 是否生成多个 HTML 文件?如果是这样,您绝对可以在每个 HTML 文件中包含页眉和页脚。
如果您只生成一个 HTML 文档,则实际上并没有“页面”的概念,除非您指的是用户向下滚动时看到的一系列屏幕。在这种情况下,您需要使用 CSS 使页眉和页脚保持可见。
或者这个 HTML 是用来生成 PDF 的吗?请进一步解释。
【讨论】:
假设我有一个像这样的 XML 结构:
<?xml version="1.0" encoding="UTF-8"?>
<documentElement>
<header/>
<body>
<!-- omitted for brevity -->
</body>
</documentElement>
和一个样式表来转换上面的XML:
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:import href="imported.xsl"/>
<xsl:output
method="html"
encoding="UTF-8"
omit-xml-declaration="yes"
doctype-system="about:blank"
indent="no"
media-type="text/html"
/>
<xsl:template match="/">
<xsl:apply-templates/>
</xsl:template>
<xsl:template match="documentElement">
<HTML dir="ltr">
<xsl:apply-templates/>
</HTML>
</xsl:template>
<xsl:template match="body">
<BODY>
<!-- content of other element -->
<xsl:apply-templates select="footer"/>
</BODY>
</xsl:template>
</xsl:stylesheet>
其中导入另一个样式表:
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<!-- imported.xsl -->
<xsl:output
method="html"
encoding="UTF-8"
indent="no"
media-type="text/html"
/>
<xsl:template match="header">
<!-- content of header -->
<HEAD>
<META charset="UTF-8"/>
</HEAD>
</xsl:template>
<xsl:template name="footer">
<FOOTER>
<!-- content of footer -->
</FOOTER>
</xsl:template>
</xsl:stylesheet>
会导致:
<!DOCTYPE HTML>
<HTML dir="ltr">
<HEAD>
<META charset="UTF-8">
</HEAD>
<BODY>
<!-- content of other element -->
<FOOTER>
<!-- content of footer -->
</FOOTER>
</BODY>
</HTML>
注意文档有
我不知道这是否能消除您的疑虑;如果您需要深入的解释,请随时告诉我:)
【讨论】: