如果我使用数字实体而不是通常推荐的alpha实体用于XML中的保留字符,那会有什么“破坏”吗?
这是一个相当复杂的应用程序的一部分,允许用户通过XML,CSV或基于Web的表单输入书目元数据。 然后可以使用用户选择的编码以XML格式(使用ONIX标准)提取此数据:utf-8,win-1252等。
原始程序员(现在已经很久......)决定对所有无法在所选编码中表示的字符使用数字实体。 XML保留的字符在任何编码下都被视为不可表示。它们被给予相同的处理并使用数字实体进行编码。
有些用户抱怨&,<,>等被编码为&#38等,而不是使用通常的alpha代码,我想知道这些投诉是否有任何实质内容。
如果我可以避免挖掘遗留代码来改变这种行为,那么它将为我节省大量资源。
答案 0 :(得分:6)
是的,可以使用数字字符引用进行转义。
来自spec(强调我的):
&符号(&)和左尖括号(<)不得 以字面形式出现,除非用作标记分隔符, 或在评论,处理指令或CDATA部分内。如果 它们在别处需要,必须使用 数字进行转义 字符引用 或字符串“
&
”和“<
” 分别。可以使用以下来表示右尖括号(&gt;) 字符串“>
”,为了兼容性,必须使用其中任何一个进行转义 字符“>
”中出现的“]]>
”或字符引用 在内容中,当该字符串未标记CDATA的结尾时 部分。
您还可以使用十六进制实体引用...
&
= &
= &
<
= <
= <
>
= >
= >