CDATA
CDATA,意为character data,是标记语言SGML与XML,表示文档的特定部分是普通的字符数据,而不是非字符数据或有特定、限定结构的字符数据。
XML中CDATA
在XML文档或外部实体中,一个CDATA section是一段按字面解释的内容,不作为标记文本。字符用CDATA节表示或者按照标准语法表示,并无差异。例如"<
" 与 "&
" 分别表示 "<
" 与 "&
"。
语法与解释
一个CDATA节以下述序列开始:
<![CDATA[
并以下述序列结束:
]]>
被包围在上述两个序列之间的所有内容被解释为字符,而不当作标记(markup)或实体引用。每个字符都按字面解释,除了序列]]>
。
在下例中:
<sender>John Smith</sender>
开始与结束的"sender"标签被解释为标记。如果写成:
<![CDATA[<sender>John Smith</sender>]]>
则等价于写为:
<sender>John Smith</sender>
也就是说,"标签"与"John Smith"具有相同状态—都被当作了文本。
类似地,如果字符值引用 ð
在元素内容中出现,将被解释为单个Unicode字符00F0 (小写字符Ð)。如果出现在CDATA节中,将被解释为6个字符:&、井号符、2、4、0、分号。
CDATA节不能嵌套。如果文本中需要包含3字符序列"]]>
",可以用两个相邻的CDATA节表示它,如下例:
<![CDATA[]]]]><![CDATA[>]]>
xml声明<?xml ...?>
中指定的字符编码集之外的Unicode字符,可以用诸如&#nnn;
的字符值引用表示。但CDATA节中的文本,只能限于上述编码集中的字符。因此,CDATA节应该用来表示手工输入的文本,其可读性较好;对于程序自动生成的XML,应该避免使用CDATA。