如何将页眉和页脚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.XSLT和Header.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>
标题内容
此解决方案工作正常,非常清晰易懂。非常感谢。