【问题标题】:include header and footer in html created with xslt transformation在使用 xslt 转换创建的 html 中包含页眉和页脚
【发布时间】:2014-05-12 18:59:05
【问题描述】:

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

【问题讨论】:

    标签: html xslt


    【解决方案1】:

    XSL 是否生成多个 HTML 文件?如果是这样,您绝对可以在每个 HTML 文件中包含页眉和页脚。

    如果您只生成一个 HTML 文档,则实际上并没有“页面”的概念,除非您指的是用户向下滚动时看到的一系列屏幕。在这种情况下,您需要使用 CSS 使页眉和页脚保持可见。

    或者这个 HTML 是用来生成 PDF 的吗?请进一步解释。

    【讨论】:

    • 结果将只是一个 html 文档。现在了解 HTML 文档中没有页面概念。我需要创建一个报告,其中包含从数据库中提取的数据并以页面格式呈现,每个页面都有页眉和页脚。在这种情况下,我只能选择创建 PDF 吗?
    • 我只是不知道您所说的“页面格式”是什么意思。你能解释一下它在浏览器中的样子吗?
    【解决方案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>
    

    注意文档有

    元素但没有
    元素以及样式表如何以不同方式转换它们;例如,

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

    【讨论】:

    猜你喜欢
    • 2013-09-13
    • 1970-01-01
    • 2015-04-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多