我正在尝试使用xsl转换文件将xml转换为html。
的test.xml:
<?xml version="1.0" encoding="utf-8"?>
<?xml-stylesheet type="text/xsl" href="test.xsl" ?>
<website>
<header/>
<content>
<b>First Line</b>
</content>
</website>
test.xsl:
<xsl:output method="html" encoding="UTF-8" indent="yes"/>
<!-- identity transform -->
<xsl:template match="@*|node()">
<xsl:copy>
<xsl:apply-templates select="@*|node()"/>
</xsl:copy>
</xsl:template>
<xsl:template match="/website">
<html>
<head/>
<body>
<xsl:apply-templates select="header|content/*"/>
</body>
</html>
</xsl:template>
<xsl:template match="header">
<b>Header</b>
<br/>
</xsl:template>
</xsl:stylesheet>
转换后的html文件如下所示:
<?xml-stylesheet type="text/xsl" href="test.xsl" ><html>
<head>
<META http-equiv="Content-Type" content="text/html; charset=UTF-8">
</head>
<body><b>Header</b><br><b>First Line</b></body>
</html>
我们看到一切都正确转换,但在输出中,样式表行位于顶部。我怎么能摆脱它?我使用IE做了这个,然后查看源代码。然后我尝试使用msxsl.exe转换文件并得到相同的结果。
如果我从xsl文件中删除了身份转换,问题就会消失,但它不能正确转换输出。
答案 0 :(得分:3)
您可以添加空模板以删除处理说明,例如<?xml-stylesheet ?>
:
....
....
<xsl:template match="header">
<b>Header</b>
<br/>
</xsl:template>
<xsl:template match="processing-instruction()"/>