CDATA,意为character data,是标记语言SGMLXML,表示文档的特定部分是普通的字符数据,而不是非字符数据或有特定、限定结构的字符数据。

XML中CDATA

在XML文档或外部实体中,一个CDATA section是一段按字面解释的内容,不作为标记文本。字符用CDATA节表示或者按照标准语法表示,并无差异。例如"<" 与 "&" 分别表示 "&lt;" 与 "&amp;"。

语法与解释

一个CDATA节以下述序列开始:

<![CDATA[

并以下述序列结束:

]]>

被包围在上述两个序列之间的所有内容被解释为字符,而不当作标记(markup)或实体引用。每个字符都按字面解释,除了序列]]>

在下例中:

<sender>John Smith</sender>

开始与结束的"sender"标签被解释为标记。如果写成:

<![CDATA[<sender>John Smith</sender>]]>

则等价于写为:

&lt;sender&gt;John Smith&lt;/sender&gt;

也就是说,"标签"与"John Smith"具有相同状态—都被当作了文本。

类似地,如果字符值引用 &#240;在元素内容中出现,将被解释为单个Unicode字符00F0 (小写字符Ð)。如果出现在CDATA节中,将被解释为6个字符:&井號符、2、4、0、分号。

CDATA节不能嵌套。如果文本中需要包含3字符序列"]]>",可以用两个相邻的CDATA节表示它,如下例:

<![CDATA[]]]]><![CDATA[>]]>


xml声明<?xml ...?>中指定的字符编码集之外的Unicode字符,可以用诸如&#nnn;字符值引用表示。但CDATA节中的文本,只能限于上述编码集中的字符。因此,CDATA节应该用来表示手工输入的文本,其可读性较好;对于程序自动生成的XML,应该避免使用CDATA。

参见

参考文献