这个规范只是讨论在XML中必须转义的标准字符集。链接帖子中提到的XML规范是W3C的规范,
可在此处找到。
除非它们是CDATA节的一部分,否则任何出现在XML数据(名称、值等)中的五个字符都需要进行转义。根据第2.4节的规定:
“&”字符和左尖括号(“<”)不能直接出现,除非它们用作标记分隔符或在注释、处理指令或CDATA节中使用。如果需要在其他地方使用它们,则必须使用数字字符引用或字符串“&”和“<”进行转义。右尖括号(“>”)可以使用字符串“>”表示,并且必须在内容中出现字符串“]]>”时进行转义,除非该字符串标记了CDATA节的结尾,为确保兼容性,可以使用“>”或字符引用进行转义。
为了允许属性值同时包含单引号和双引号,“'”或单引号字符可以表示为“'”,双引号字符可以表示为“"”。
' -> '
" -> "
> -> >
< -> <
& -> &
通常情况下,您不会将它们编码为xHHHH,而是使用上面列出的XML实体,但两者都可以。您也不需要在每种情况下都对引号或右尖括号进行编码,只有在它们表示XML语法时才需要,但通常最好始终这样做。
XML规范还包括可以出现在XML文档中的每个Unicode字符的列表,在第2.2节中:
Char ::= #x9 | #xA | #xD | [#x20-#xD7FF] | [#xE000-#xFFFD] | [#x10000-#x10FFFF]
该列表基本包括基本平面中的每个Unicode字符(您可能会遇到的每个字符),除了控制字符。只允许制表符、CR和LF字符 - 任何其他ASCII 32(空格)以下的字符都需要转义。
列表中的巨大间隙(0xD800-0xDFF)用于代理编码值,无论如何它们都不应单独出现,因为它们不是有效字符。最后两个字符0xFFFE和0xFFFF也不是有效字符。