我有一个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>
答案 0 :(得分:2)
您只能使用xsl:include
或xsl: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的结构。