<!-- here is some comment --
^
|
what can be here apart from '>'?
XML似乎不喜欢评论中的' - '。我在某处读到' - '在<! ... >
内部切换了一些模式,但<!-- -- -- -->
(偶数--
s)似乎也是无效的。如果它是一个历史性的特征,它的“专业”部分是什么? (“contra”部分无法在评论中加--
。
仅通过' - &gt;'使评论处理复杂化的原因是什么评论结束并允许' - '在里面?
答案 0 :(得分:42)
来自标准文件:
http://www.w3.org/TR/REC-xml/#sec-comments
[定义:注释可能出现在其他文档之外的任何位置 标记;此外,它们可能出现在文档类型中 在语法允许的地方声明。他们不属于 文件的字符数据; XML处理器可以但不必成功 应用程序可以检索注释文本。 :用于 compatibility,字符串“ - ”(双连字符)不得出现在其中 注释。] 不得在其中识别参数实体引用 评价。
答案 1 :(得分:35)
也许这对某人有帮助。我遇到了一个问题,我想在XML中注释掉一个以 - :
开头的命令行参数<arg line="-v --line-break 0" />
这样的自然正常的方式
<!-- <arg line="-v --line-break 0" /> -->
没有用,但我发现,如果-
被替换为它的UTF-8等效-
,那么它可以在评论中容忍。
所以在我的例子中是字符串
<arg line="-v --line-break 0" />
被正确解析,可以成为评论的一部分。
当然它看起来有点难看,但如果有人想要保留一个字符串 - 作为他的XML中的评论 - 我认为它仍然比没有好。
答案 2 :(得分:27)
这是XML中的一个愚蠢的规则,因为它是在SGML中,人们不想破坏兼容性。为什么它在SGML中是任何人的猜测:可能是因为它在原始解析器中保存了三行代码。
答案 3 :(得分:21)
--
不允许与SGML兼容。来自On SGML and HTML:
标记声明打开之间不允许有空格 分隔符(“&lt ;!”)和注释打开分隔符(“ - ”),但是 允许在注释关闭分隔符(“ - ”)和标记之间 声明关闭分隔符(“&gt;”)。一个常见的错误是包括a 注释中的连字符串(“---”)。作者应该避免 将两个或多个相邻的连字符放在注释中。
所以在SGML <!
和>
打开和关闭“标记声明”和--
打开和关闭评论。
答案 4 :(得分:0)
这个问题迟早会影响希望使用XML注释来禁用不需要的内容的任何人。我有数天的主要问题,因为Spring上下文配置无法加载,而没有任何详细说明原因。 问题是习惯这样评论内容块:
<value>ABC1</value> <!-- <value>ABC2</value> --> <value>ABC3</value>
注释它必须更改为此:
<!--
<value>ABC1</value>
!-- <value>ABC2</value> --
<value>ABC3</value>
-->
注释掉的块中的破折号(而不是被忽略)使整个文件的解析变得混乱,无论它们位于何处。