我创建使用XML的内容XSLT转换运行的HTML。 XML内容是动态的,因此产生的HTML可以分布在多个页面。 我想包括在HTML中的每个输出页面页眉和页脚。 有没有办法做到这一点XSLT转换或HTML的技巧?
Answer 1:
是XSL生成多个HTML文件? 如果是这样,你绝对可以包括在每个HTML文件中的页眉和页脚。
如果你只生成一个HTML文件中,没有一个真正的“页”的概念,除非你指的是一系列屏幕的用户看到的是他们向下滚动。 在这种情况下,你需要用CSS来使页眉和页脚保持可见。
或正在使用该HTML生成PDF? 请进一步解释。
Answer 2:
比方说,我有过这样的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>
注意文档具有<页眉/>元素,而不是<页脚/>元素和样式表(一个或多个)如何变换(或多个)不同的它们; 例如,的<xsl:模板匹配 = “报头”/>对的<xsl:模板名称 = “页脚”/>!
我不知道这是否会清除你的疑问; 如果你需要深入的解释,不要犹豫,让我知道:)
文章来源: include header and footer in html created with xslt transformation