如何将3个单独的XSLT文件从单个XML处理为单个输出?

时间:2015-06-29 10:05:28

标签: html css xml xslt

我有一个XSLT文件,可与XML一起处理HTML(目前使用X-trans和Notepad ++)。我想要做的是将它分成3个文件,标题,正文和页脚。

到目前为止,我尝试使用xsl:import& xsl:include但是每当我尝试处理它时说文件无效。我显然遗漏了一些可以帮助的人吗?

Header XSLT:

<?xml version="1.0"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="/">
    <html lang="en-GB">
        <body style="font-family:'Praxis Com Light'; color:#632423; width:100%; font-size:14px !important;">


            <xsl:variable>variable1</xsl:variable>
            <xsl:variable>variable2</xsl:variable>
            <xsl:variable>variable3</xsl:variable>

            <div>Header</div>

        </body>
    </html>
</xsl:template>

Body XSLT:

<?xml version="1.0"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="/">
    <html lang="en-GB">
        <body style="font-family:'Praxis Com Light'; color:#632423; width:100%; font-size:14px !important;">


            <xsl:include href="Header.xsl"/>

            <xsl:variable>variable1</xsl:variable>
            <xsl:variable>variable2</xsl:variable>
            <xsl:variable>variable3</xsl:variable>

            <table>Main XSL file</table>

            <xsl:include href="Footer.xsl"/>


        </body>
    </html>
</xsl:template>

页脚XSLT:

<?xml version="1.0"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="/">
    <html lang="en-GB">
        <body style="font-family:'Praxis Com Light'; color:#632423; width:100%; font-size:14px !important;">


            <xsl:variable>variable1</xsl:variable>
            <xsl:variable>variable2</xsl:variable>
            <xsl:variable>variable3</xsl:variable>

            <p>Footer</p>


        </body>
    </html>
</xsl:template>

Diagram to help Illustrate

1 个答案:

答案 0 :(得分:2)

您只能使用xsl:includexsl:import作为顶级元素,即分别为xsl:stylesheet xsl:transform元素的直接子元素。因此,可能的方法是

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template name="header>


            <xsl:variable>variable1</xsl:variable>
            <xsl:variable>variable2</xsl:variable>
            <xsl:variable>variable3</xsl:variable>

            <div>Header</div>

</xsl:template>

</xsl:stylesheet>

<?xml version="1.0"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:include href="Header.xsl"/>
<xsl:include href="Footer.xsl"/>

<xsl:template match="/">
    <html lang="en-GB">
        <body style="font-family:'Praxis Com Light'; color:#632423; width:100%; font-size:14px !important;">

            <xsl:call-template name="header"/>

            <xsl:variable>variable1</xsl:variable>
            <xsl:variable>variable2</xsl:variable>
            <xsl:variable>variable3</xsl:variable>

            <table>Main XSL file</table>

            <xsl:call-template name="footer"/>


        </body>
    </html>
</xsl:template>

</xsl:stylesheet>

使用模板匹配和模式可能更好,而不是使用命名模板,但这取决于要处理的XML的结构。