(译者注:这是Mike Brown在[xml-dev]邮件讨论区中针对Michael Fitzgerald关于CDATA和PCDATA的关系的一种不确切的说法给与的回应。Michael Fitzgerald的说法是一种具有普遍性的误解,而Mike Brown予以了澄清,之后Michael Fitzgerald表示Mike Borwn的解释更好。)
>Michael Fitzgerald写道:
>#PCDATA指明元素可容纳被解析(parsed)字符数据。解析(parsing)将测试字符串是否遵循>XML1.0所规定的词法约束。
>
>CDATA出现在属性声明中,它指明属性可容纳不被解析(unparsed)字符数据。
这样的说法不确切。按照你对于“解析”一词的解释,XML文档中所有的字符都是要被解析的。
CDATA标志在属性声明中用于指明属性为CDATA字符类型,这种类型中&,<,和引号具有特殊意义。
PCDATA标志在元素声明中用于指明元素有混合内容(字符数据或者字符数据与子元素的混合)。元素内容将被解析。这种类型中&和<具有特殊意义,如果不是作为标记开始,则使用时要转义。
一个被"<![CDATA[" and "]]>"括起来的CDATA节,是不将被解析的字符数据节,这与CDATA和PCDATA这两种被解析的字符数据形成对照。CDATA节只能出现在元素内容中,它与属性声明中的CDATA标志并无任何关系。