在使用xslt转换创建的html中包含页眉和页脚

时间:2014-05-12 18:59:05

标签: html xslt

我正在使用在xml内容上运行的XSLT转换创建HTML。 xml内容是动态的,因此生成的HTML可以分布在多个页面上。我想在HTML的每个输出页面中包含页眉和页脚。有没有办法做这个XSLT转换或HTML技巧?

2 个答案:

答案 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;!

我不知道这是否能解除你的怀疑;如果您需要深入解释,请随时告诉我:)。