是>>允许在XML元素内容中使用

时间:2013-11-28 08:55:23

标签: xml specifications

查看XML element contet的定义及其CharData的定义。

[43] content   ::= CharData? ((element | Reference | CDSect | PI | Comment) CharData?)*

[14] CharData  ::= [^<&]* - ([^<&]* ']]>' [^<&]*)

我注意到CharData的这个定义并不禁止在XML元素中包含>个字符。我认为这是错误所以我看了CharData的描述(强调我的)

  

&符号(&amp;)和左尖括号(&lt;)不得   以字面形式出现,除非用作标记分隔符,   或在评论,处理指令或CDATA部分内。如果   它们在其他地方需要,它们必须使用数字进行转义   字符引用或字符串“&amp;”和“&lt;”。   可以使用字符串表示右尖括号(&gt;)   &gt;,并且为了兼容性,必须使用“&gt;”或   当它出现在字符串“]]&gt;中时的字符引用在内容上,   当该字符串未标记CDATA部分的结尾时。

所以似乎[14]和CharData的定义是不一致的。这个假设是正确的还是解析器允许在元素内>而不转义它?或者他们会自动逃脱吗?

1 个答案:

答案 0 :(得分:2)

事实上,在{x}}中允许使用字符>而不进行转义,但字符序列]]>不是。

可能将任何>字符转义为&gt;,但如果必须,则必须这样做,如果它是上述序列的一部分,即序列]]&gt;(或带有字符引用的等价物)是在xml中用作CDATA部分的结束标记时表示该字符序列的正确方法。