查了一下w3school,是这样说明的:
PCDATA
PCDATA 的意思是被解析的字符数据(parsed character data)。
可把字符数据想象为 XML 元素的开始标签与结束标签之间的文本。
PCDATA 是会被解析器解析的文本。这些文本将被解析器检查实体以及标记。
文本中的标签会被当作标记来处理,而实体会被展开。
不过,被解析的字符数据不应当包含任何 &、< 或者> 字符;需要使用 &、<以及 > 实体来分别替换它们。
CDATA
CDATA 的意思是字符数据(character data)。
CDATA 是不会被解析器解析的文本。在这些文本中的标签不会被当作标记来对待,其中的实体也不会被展开。
几个实体引用:
实体引用 字符
< <
> >
& &
" "
' '
又有网上有人这样说,我觉得挺直观,先转过来:
PCDATA表示已解析的字符数据。
CDATA是不通过解析器进行解析的文本,文本中的标签不被看作标记。
CDATA表示里面是什么数据XML不会解析.比如可能是下面的一段
<![CDATA[
if(a>b){
System.out.println(a);
}
]]>
注意上面的一个">"符号.
PCDATA的数据是要给XML解析器去解析的,那上面的>去解析肯定会出错了,所以要用实体定义.上面的数据如果用PCDATA表示如下:
if(a&gt;b){
System.out.println(a);
}
关于实体引用,转载了一篇文章解释的比较好:
通过字符和实体引用,可以通过引用将信息加入 XML 文档,而不必直接在文档中键入字符。在下列情况下,这样做很有用:因为会被解释为标记,字符无法直接输入文档。
因为输入设备的限制,字符无法直接输入文档。
字符无法通过限于单字节字符的处理器可靠地传输。
字符串或文档片断反复出现,并且可以缩写。
为了显示内容,XML 提供了许多语法构造,以“and”符 (&) 开头,以分号 (;)结尾。
通过字符引用,可以插入通过指向 Unicode 代码点的数字标识的 Unicode字符。代码点可以使用十进制或十六进制表示法标识。
& #value;
用于十进制引用的语法。
&# xvalue;
用于十六进制引用的语法。
例如,要插入欧元符号,许多键盘上仍没有该字符,可以将 € 或€ 插入文档。
下表为 XML 标记使用的字符列出了五种内置实体。实体 实体引用 含义
lt
<
<(小于号)
gt
>
>(大于号)
amp
&
&(“and”符)
apos
'
'(撇号或单引号)
quot
"
"(双引号)
如果字符可能会使 XML 分析器错误地解释文档结构,请使用实体,而不要键入字符。' 和" 实体引用最常用在属性值中。
例如,要写入 Me&You,请使用 Me&You。对于a<b,请使用 a<b。对于b>c,请使用 b>c。
还可以定义自己的实体,与 HTML 定义在 HTML 中使用的实体集非常类似。&apos 无法作为HTML 文件识别;在转换为 HTML 时必须使用 $#....。
如果使用的文档类型定义 (DTD) 已定义了实体,可以使用以下语法在文档内容中引用这些实体。
转载自:http://blog.sina.com.cn/s/blog_5d3241cc0100oz31.html