如何注释掉里面有评论的XML部分?
以下内容不起作用,只会注明stuff0
:
<!--
stuff0
<!-- stuff1 -->
stuff2
<!-- stuff3 -->
stuff4
<!-- stuff5 -->
stuff6
-->
答案 0 :(得分:7)
你没有。根据{{3}}的XML不支持嵌套注释。
答案 1 :(得分:6)
--
。您可以在两个-
之间添加空格。如果你想以编程方式进行,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处理器也可能输出错误。根据规范,由实现来添加空格或引发错误。
答案 2 :(得分:4)
我知道,你不应该这样做。我的意思是,根据XML规范,你不应该这样做。停止阅读这个答案。这是一个黑客! (也许是一个好的)。
话虽如此...... 我真的非常需要,所以这里是trick。使用未使用的处理指令
围绕要评论的部分<some-tags />
<?comment
<!-- traditional comment 1 -->
<badtag prop1="123">
<!-- traditional comment 2 -->
</badtag>
<!-- traditional comment 3 -->
?>
<rest-of-my-tags />
您可以使用任何未使用的处理指令。我选择“评论”作为未使用的处理指令,因此我使用<?comment
开始了大评论,并以?>
结束。
几乎任何单词都可以作为处理指令,因为大多数时候它们并没有真正使用。我的意思是,你多久以前使用过它?
答案 3 :(得分:2)
您有两种选择:
--
实例替换为其他内容。答案 4 :(得分: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