Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/75.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何将页眉和页脚XSLT文件添加到另一个XSLT文件以将其转换为HTML?_Html_Xml_Xslt_Xslt 1.0 - Fatal编程技术网

如何将页眉和页脚XSLT文件添加到另一个XSLT文件以将其转换为HTML?

如何将页眉和页脚XSLT文件添加到另一个XSLT文件以将其转换为HTML?,html,xml,xslt,xslt-1.0,Html,Xml,Xslt,Xslt 1.0,我正在编写一个XSLT程序,它将XML转换为HTML格式。我想将页眉和页脚添加到XSLT。这意味着我正在考虑在我的content.xslt中添加header.xslt和footer.xslt 这是我的密码: XML文件dataDetail.XML <?xml version="1.0" encoding="UTF-8"?> <?xml-stylesheet href="layout.xslt" type="text/xsl"?> <customerList>

我正在编写一个
XSLT
程序,它将
XML
转换为
HTML
格式。我想将页眉和页脚添加到
XSLT
。这意味着我正在考虑在我的
content.xslt
中添加
header.xslt
footer.xslt

这是我的密码: XML文件
dataDetail.XML

<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet href="layout.xslt" type="text/xsl"?>
 <customerList>
    <customer id="101">
        <name>Jon</name>
        <email>Jon.sood@iqbsys.com</email>
        <age>23</age>
        <gender>male</gender>
    </customer>
</customerList>
这是我的content.xslt文件:

 <?xml version="1.0"?>
<xsl:stylesheet version="1.0"
    xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
    <xsl:template match="/">
        <html>
            <body>
                <h1>Header content</h1>
                <h2>=======start content==========</h2>
                <h2>The customer details are: </h2>
                <table border="1">
                    <tr bgcolor="#9acd32">
                        <th>Name</th>
                        <th>Email</th>
                        <th>Gender</th>
                    </tr>
                    <xsl:for-each select="customerList/customer">
                        <tr>
                            <td>
                                <xsl:value-of select="name" />
                            </td>
                            <td>
                                <xsl:value-of select="email" />
                            </td>
                            <td>
                                <xsl:value-of select="gender" />
                            </td>
                        </tr>
                    </xsl:for-each>
                </table>

                <h2>=======End content==========</h2>
                <h1>Footer content</h1>
            </body>
        </html>
    </xsl:template>
</xsl:stylesheet>

标题内容
=======开始内容==========
客户详情如下:
名称
电子邮件
性别
=======结束内容==========
页脚内容
此操作的输出为:

我想显示来自两个不同
XSLT
文件的页眉和页脚内容,即footer.XSLTHeader.XSLT

如何将这两个xslt文件包含到content.xslt中?我已尝试导入,但没有得到正确的结果

谢谢:-)

如何将这两个xslt文件包含到content.xslt中?我已尝试导入,但没有得到正确的结果

你有两个主要问题需要解决

首先,您需要在单独的页眉和页脚样式表中定义的转换显示在主转换中。您没有显示执行此操作的任何机制,但这并不难:您需要在主模板的适当位置插入
apply templates
元素。对页眉和页脚模板使用非默认模式可能很有用。比如说,

content.xslt

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

                <!-- THIS: -->
                <xsl:apply-templates select="." mode="header" />

                <h2>=======start content==========</h2>
                <h2>The customer details are: </h2>
                <!-- ... -->
            </body>
        </html>
    </xsl:template>
</xsl:stylesheet>
<xsl:stylesheet version="1.0"
    xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
    <xsl:import href="content.xslt" />
    <xsl:import href="header.xslt" />
    <xsl:import href="footer.xslt" />
</xsl:stylesheet>
<xsl:stylesheet version="1.0"
    xmlns:xsl="http://www.w3.org/1999/XSL/Transform">

    <!-- note that this mode matches the one selected by the apply-templates
         in content.xslt: -->
    <xsl:template match="/" mode="header">
        <h1>Header Content</h1>
    </xsl:template>

</xsl:stylesheet>
请注意,此样式表中不需要模板;依赖导入的样式表来提供所需的所有数据。然后,您可以这样编写标题样式表,例如:

header.xslt

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

                <!-- THIS: -->
                <xsl:apply-templates select="." mode="header" />

                <h2>=======start content==========</h2>
                <h2>The customer details are: </h2>
                <!-- ... -->
            </body>
        </html>
    </xsl:template>
</xsl:stylesheet>
<xsl:stylesheet version="1.0"
    xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
    <xsl:import href="content.xslt" />
    <xsl:import href="header.xslt" />
    <xsl:import href="footer.xslt" />
</xsl:stylesheet>
<xsl:stylesheet version="1.0"
    xmlns:xsl="http://www.w3.org/1999/XSL/Transform">

    <!-- note that this mode matches the one selected by the apply-templates
         in content.xslt: -->
    <xsl:template match="/" mode="header">
        <h1>Header Content</h1>
    </xsl:template>

</xsl:stylesheet>

标题内容

此解决方案工作正常,非常清晰易懂。非常感谢。