2011-12-20 65 views
21

如何註釋掉裏面有註釋的XML部分?如何評論裏面有評論的XML部分?

下將無法正常工作,它只是註釋掉stuff0

<!-- 
stuff0 
<!-- stuff1 --> 
stuff2 
<!-- stuff3 --> 
stuff4 
<!-- stuff5 --> 
stuff6 
--> 
+1

可能重複[嵌套註釋在XML?](http://stackoverflow.com/questions/1324821/nested-comments-in-xml) – dogbane 2011-12-20 16:30:23

回答

6

--在XML註釋中是不允許的。您可以在兩個-之間添加一個空格。如果你想做這個programmaticaly,一個XSLT可能爲你做這項工作。例如,下面的XSLT:

<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="2.0"> 
    <xsl:template match="/"> 
     <a> 
      <xsl:comment select="'a -- b -- c'"/> 
     </a> 
    </xsl:template> 
</xsl:stylesheet> 

給出以下輸出:

<a><!--a - - b - - c--></a> 

但XSLT處理器還可以輸出錯誤。根據規範,實施需要添加空間或引發錯誤。

6

你不知道。 XML根據其specification不支持嵌套註釋。

2

你有兩個選擇:

  1. 刪除它,而不是註釋掉 - 你總是可以事後恢復。
  2. 首先用其他東西替換--的所有實例。
2

這裏的另一種方法:你可以只使用嵌套評論,就好像是在XML的支持:

<!-- Outer comment 
    <SomeXML> ... </SomeXML> 
    <!-- Inner comment 
    <SomeXML> ... </SomeXML> 
    --> 
--> 

然後只用 XML文本編輯器中。您實際輸入進程的XML是您編寫的一個簡單程序的輸出,它讀取嵌套註釋XML並吐出unnested-comment-XML。

另一個類似的技巧是使用C編譯器的預處理器。我幾年前使用微軟的C++編譯器做過。編譯器cl.exe實際上調用了兩個單獨的程序cl1.exe和cl2.exe。 Cl1.exe是預處理器。所以你可以給任何東西(XML,nmake腳本等等)提供任何東西,並且它會對它進行預處理。所以像這樣的東西會工作:

<SomeXML> ... </SomeXML> 
#ifdef PRODUCE_THIS 
<SomeMoreXML> ... </SomeMoreXML> 
#endif