XML注释禁止出现连续“--”,因其会干扰结束标记-->的识别;合法注释需满足正则[^-]*(-[^-])*,可用全角字符或拆分方式安全表达破折号。
XML注释中不能包含连续的“--”(两个连字符),这是XML规范明确禁止的。
XML注释以结束。例如:
注释内容可以包含字母、数字、空格、标点(除特定限制外),但有两个关键约束:
-结尾(即不能以-->之前的那个-单独存在,实际意味着倒数第二个字符不能是-)因为--是注释结束标记-->的前缀。如果注释体内出现--,解析器可能提前误判注释结束位置,导致解析失败或行为未定义。XML 1.0规范(W3C)明确规定:注释内容必须匹配正则表达式[^-]*(-[^-])*,即不允许两个连续的-。
例如以下写法是非法的:
❌(含--)
❌
如果确实需要在注释中表示“—”(中文破折号)、“–”(en dash)或“-”(短横线),可采用以下方式:
-(U+FF0D)或—(U+2014),它们不属于XML禁止的--
大多数XML解析器(如libxml2、Java DOM、Python xml.etree)在遇到含--的注释时会直接报错,例如:
FATAL ER
ROR: Comment contains '--'
建议在编辑XML时:
xmllint --noout file.xml命令行验证