我正在使用在xml内容上运行的XSLT转换创建HTML。 xml内容是动态的,因此生成的HTML可以分布在多个页面上。我想在HTML的每个输出页面中包含页眉和页脚。有没有办法做这个XSLT转换或HTML技巧?
答案 0 :(得分:0)
XSL是否会生成多个HTML文件?如果是这样,您肯定可以在每个HTML文件中包含页眉和页脚。
如果您只生成一个HTML文档,那么实际上并不存在“页面”的概念,除非您指的是用户在向下滚动时看到的一系列屏幕。在这种情况下,您需要使用CSS来使页眉和页脚保持可见。
或者这个HTML是否用于生成PDF?请进一步解释。
答案 1 :(得分:0)
我们说我有一个 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>
请注意,该文档包含&lt; header /&gt; 元素,但没有&lt; footer /&gt; 元素以及样式表如何转换(s)他们不同;例如,&lt; xsl:template 匹配 =&#34;标题&#34; /&gt;与&lt; xsl:template 名称 =&#34;页脚&#34; /&gt;!
我不知道这是否能解除你的怀疑;如果您需要深入解释,请随时告诉我:)。