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