如果关闭,请在此处更正我的术语:
XML的5个字符替换是:
>& amp; (&)
>& lt; (<)
>& gt; (>)
>& quot; (“)
>& (‘)
所有这些替换都需要在元素文本中进行吗?或者只属性文字? (术语修正?)
例如这是有效的XML吗?
<myelement>x && y</myelement> <myelement>And I quote,"no"</myelement>
&安培; GT;和& lt;在这种情况下,替换似乎很明显,但我不清楚替换规则是否对整个XML文档是全局的,或者它们是否对文档的不同部分应用不同(例如,cdata部分应用不同的规则).
假设:这是无效的XML:
<myelement field="no & allowed here"/> <myelement field="no <> allowed here"/>
引号是明显的属性分隔符,<>是明显的元素文本分隔符.
在元素内容中,您只需要逃避&和< ;;你永远不需要逃避单引号或双引号,你需要逃避>只有当它作为序列的一部分出现时]]> (许多人无条件地更换它,因为这更简单).
在属性内容中,您只需要转义&和<和'或',取决于哪一个被用作属性定界符. 以&开头的实体在注释或CDATA部分或元素或属性名称中无法识别,因此不得在这些上下文中转义特殊字符.