使用XSLT删除空注释标记

时间:2013-01-10 09:31:07

标签: xml xslt xml-comments

我有一个输入xml,假设形式为

<A>
  <B></B>
  <!---->
  <C></C>
</A>

我正在使用XSL来转换此XML,但是当我解析此XML时,我收到以下错误消息

“序列化文件java.lang.ArrayIndexOutOfBoundsException时出错:-1 基本例外“

我已经在我的XSL中包含了以下命令,仍然收到相同的错误

<xsl:template match="comment()"/>

请帮忙!

TIA:)

1 个答案:

答案 0 :(得分:1)

尝试:

  <xsl:template match="comment()[.='']"/>

示例XML:

<?xml version="1.0" encoding="utf-8"?>
<root>
  <!---->
  <!--above comment line should be deleted-->
  <foo>
    <!--fooo data-->
    <foobar/>
  </foo>
</root>

输入XSLT:

<?xml version="1.0" encoding="utf-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
    <xsl:output method="xml" indent="yes"/>

    <xsl:template match="@* | node()">
        <xsl:copy>
            <xsl:apply-templates select="@* | node()"/>
        </xsl:copy>
    </xsl:template>
  <xsl:template match="comment()[.='']"/>
</xsl:stylesheet>

输出:

<?xml version="1.0" encoding="utf-8"?>
<root>
  <!--above comment line should be deleted-->
  <foo>
    <!--fooo data-->
    <foobar />
  </foo>
</root>