【问题标题】:How do I process 3 separate XSLT files from a single XML to a single output?如何将 3 个单独的 XSLT 文件从单个 XML 处理为单个输出?
【发布时间】:2015-06-29 10:05:27
【问题描述】:

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

到目前为止,我已经尝试使用 xsl:import & xsl:include,但是每当我尝试处理它时,它都会说该文件无效。我显然错过了什么有人可以帮忙吗?

标头 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>

正文 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>

【问题讨论】:

    标签: html css xml xslt


    【解决方案1】:

    您只能将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 的结构。

    【讨论】:

    • 别忘了给&lt;xsl:variable&gt;variable1&lt;/xsl:variable&gt;和朋友@name属性。
    猜你喜欢
    • 2023-03-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-11-21
    • 1970-01-01
    • 1970-01-01
    • 2022-07-13
    • 2010-12-08
    相关资源
    最近更新 更多