【问题标题】:Nested comments in XML?XML中的嵌套注释?
【发布时间】:2010-11-22 10:16:35
【问题描述】:

这些嵌套的 cmets 是否允许在 XML 文件中使用?

<!-- Making only one observation attempting to correct the error code -->
<!-- <component>
       <!-- Result observation template -->
            <!-- <id root="2.16.840.1.113883.19.5.10" extension="103220"/>
     </component> -->

【问题讨论】:

  • ...想知道为什么没有人提到使用 CDATA 作为 hacky 块评论...

标签: xml comments


【解决方案1】:

不,字符串-- 不允许出现在 XML 的 cmets 中。因此,您在另一条评论中显示 -- 的事实将导致失败。

并且尝试发布该答案也破坏了文本输入解析;)

如需进一步证明,请查看 W3C 规范:

http://www.w3.org/TR/2008/REC-xml-20081126/#sec-comments

短语

为了兼容性,字符串“--”(双连字符)不得出现在 cmets 中。]

出现在 XML cmets 部分的第一段中。

【讨论】:

  • System.Xml.XmlException: This is an invalid comment syntax.
  • 这是为了保证与SGML的兼容性。
  • @Brent Nash 那么如何注释掉一个包含 cmets 的大块呢?
  • @BrentNash 我相信你的话,这只是为了确保向后兼容性:)。尽管如此,对于 90 年代设计的格式,不允许嵌套 cmets 并不酷。
【解决方案2】:

正如How do I comment out a block of tags in XML? 中所说,您可以尝试使用不存在的处理指令来包装您的代码,例如:

<?ignore
<component>
       <!-- Result observation template -->
            <!-- <id root="2.16.840.1.113883.19.5.10" extension="103220"/>
     </component> 
?>

【讨论】:

  • 这对于表现不佳的 NuGet 包通过添加自己的元素和数十个 cmets 破坏我精心策划的 web.config 文件的情况非常有帮助!
【解决方案3】:

一句话——没有。

第一个遇到的结束评论标记将,呃...结束评论,其余部分看起来有点不愉快。

【讨论】:

    【解决方案4】:

    你不能。 -- 开始和终止评论。这使得嵌套它们变得不可能。

    【讨论】:

      【解决方案5】:

      Notepad++ 和 XML Tools 插件可以做到这一点。

      选择一个 xml 块并在 xml 工具子菜单上选择“评论选择”。

      每个现有的“内部 xml 注释”都将被更改,使其看起来像这样

        <!{1}** inner xml comment **{1}>
      

      如果你以这种方式添加另一个外部注释,那些原来的内部 cmets 将被进一步更改为

        <!{2}** inner xml comment **{2}>
      

      【讨论】:

        猜你喜欢
        • 2015-01-27
        • 2011-07-12
        • 2011-10-11
        • 2014-10-12
        • 1970-01-01
        • 2013-08-11
        • 2012-01-17
        • 1970-01-01
        • 2011-10-05
        相关资源
        最近更新 更多