转换为xsl,显示样式表行

时间:2015-07-23 02:00:13

标签: xml xslt

我正在尝试使用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文件中删除了身份转换,问题就会消失,但它不能正确转换输出。

1 个答案:

答案 0 :(得分:3)

您可以添加空模板以删除处理说明,例如<?xml-stylesheet ?>

....
....

<xsl:template match="header">
    <b>Header</b>
    <br/>
</xsl:template>

<xsl:template match="processing-instruction()"/>