包括与XSLT转换创建的HTML页眉和页脚(include header and footer in

2019-10-20 02:59发布

我创建使用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
标签: html xslt