在XML中用&、>和<转义“&”、“>”和“<”是否正确?
Is it correct to escape "&", ">" and "<" with &, > and < in XML?
如果我对 XML 中的保留字符使用数字实体而不是通常推荐的字母实体,会有什么 "break" 吗?
这是一个相当复杂的应用程序的一部分,允许用户通过 XML、CSV 或基于网络的表单输入书目元数据。
然后可以使用用户选择的编码 XML(使用 ONIX 标准)提取此数据:utf-8、win-1252 等
最初的程序员(现在早已不复存在...)决定对所有无法在所选编码中表示的字符使用数字实体。
XML-保留字符在任何编码下都被认为是不可表示的。它们被给予相同的处理,并使用数字实体进行编码。
有些用户抱怨 &、<、> 等被编码为 & 等,而不是使用通常的 alpha 代码,我想知道这些投诉是否有任何实质内容。
如果我能避免挖掘遗留代码来改变这种行为,那会为我节省很多资源。
是的,可以使用数字字符引用进行转义。
来自 spec(强调我的):
The ampersand character (&) and the left angle bracket (<) must not
appear in their literal form, except when used as markup delimiters,
or within a comment, a processing instruction, or a CDATA section. If
they are needed elsewhere, they must be escaped using either numeric
character references or the strings "&
" and "<
"
respectively. The right angle bracket (>) may be represented using the
string ">
", and must, for compatibility, be escaped using either
">
" or a character reference when it appears in the string "]]>
"
in content, when that string is not marking the end of a CDATA
section.
您也可以使用十六进制实体引用...
&
= &
= &
<
= <
= <
>
= >
= >
如果我对 XML 中的保留字符使用数字实体而不是通常推荐的字母实体,会有什么 "break" 吗?
这是一个相当复杂的应用程序的一部分,允许用户通过 XML、CSV 或基于网络的表单输入书目元数据。 然后可以使用用户选择的编码 XML(使用 ONIX 标准)提取此数据:utf-8、win-1252 等
最初的程序员(现在早已不复存在...)决定对所有无法在所选编码中表示的字符使用数字实体。 XML-保留字符在任何编码下都被认为是不可表示的。它们被给予相同的处理,并使用数字实体进行编码。
有些用户抱怨 &、<、> 等被编码为 & 等,而不是使用通常的 alpha 代码,我想知道这些投诉是否有任何实质内容。
如果我能避免挖掘遗留代码来改变这种行为,那会为我节省很多资源。
是的,可以使用数字字符引用进行转义。
来自 spec(强调我的):
The ampersand character (&) and the left angle bracket (<) must not appear in their literal form, except when used as markup delimiters, or within a comment, a processing instruction, or a CDATA section. If they are needed elsewhere, they must be escaped using either numeric character references or the strings "
&
" and "<
" respectively. The right angle bracket (>) may be represented using the string ">
", and must, for compatibility, be escaped using either ">
" or a character reference when it appears in the string "]]>
" in content, when that string is not marking the end of a CDATA section.
您也可以使用十六进制实体引用...
&
= &
= &
<
= <
= <
>
= >
= >