2013-01-10 48 views
0

空註釋標籤我有一個輸入XML假設刪除使用XSLT

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

我使用XSL來改造這個XML形式的,但是當我分析這個XML我收到以下錯誤消息

「錯誤序列化文件java.lang.ArrayIndexOutOfBoundsException:-1 基本異常」

我在XSL已經包括下面的命令,仍然得到同樣的錯誤

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

請幫忙!

TIA :)

+3

它看起來像XML解析器或XSLT處理器中的錯誤。看到堆棧跟蹤將有所幫助;我們需要知道您使用的是哪個XML解析器和XSLT處理器。 –

+0

也許你可以向我們展示你用來解析/轉換XML的代碼? – JLRishe

回答

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> 
+0

謝謝@ infantPro'Arvind'。但我仍然得到相同的異常:「錯誤序列化文件java.lang.ArrayIndexOutOfBoundsException:-1基本異常」 – Vix

+0

@Vix,據我所知,這與XSLT的刪除註釋方法無關!我添加我的答案的原因是,您的示例XSLT刪除了所有註釋!在添加''時,只會刪除那些沒有任何數據的註釋標記! –