【问题标题】:Converting to xsl showing the stylesheet line转换为显示样式表行的 xsl
【发布时间】:2015-10-13 03:29:51
【问题描述】:

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

【问题讨论】:

    标签: xml xslt


    【解决方案1】:

    您可以添加一个空模板来删除处理指令,例如&lt;?xml-stylesheet ?&gt;

    ....
    ....
    
    <xsl:template match="header">
        <b>Header</b>
        <br/>
    </xsl:template>
    
    <xsl:template match="processing-instruction()"/>
    

    【讨论】:

    • 解决了问题!你能推荐一个 xsl 的参考吗,其他 10% 总是让我望而却步......
    猜你喜欢
    • 2013-09-06
    • 1970-01-01
    • 2012-04-01
    • 2021-01-27
    • 1970-01-01
    • 2017-08-22
    • 2012-01-02
    • 1970-01-01
    • 2018-07-05
    相关资源
    最近更新 更多