PCDATA和CDATA的区别

查了一下w3school,是这样说明的:

PCDATA

PCDATA 的意思是被解析的字符数据(parsed character data)。

可把字符数据想象为 XML 元素的开始标签与结束标签之间的文本。

PCDATA 是会被解析器解析的文本。这些文本将被解析器检查实体以及标记。

文本中的标签会被当作标记来处理,而实体会被展开。

不过,被解析的字符数据不应当包含任何 &、< 或者> 字符;需要使用 &amp;、&lt;以及 &gt; 实体来分别替换它们。
CDATA

CDATA 的意思是字符数据(character data)。

CDATA 是不会被解析器解析的文本。在这些文本中的标签不会被当作标记来对待,其中的实体也不会被展开。

几个实体引用:

实体引用 字符
&lt; <
&gt; >
&amp; &
&quot; "
&apos; '

又有网上有人这样说,我觉得挺直观,先转过来:

PCDATA表示已解析的字符数据。
CDATA是不通过解析器进行解析的文本,文本中的标签不被看作标记。
CDATA表示里面是什么数据XML不会解析.比如可能是下面的一段
<![CDATA[

if(a>b){
System.out.println(a);
}

]]>

注意上面的一个">"符号.


PCDATA的数据是要给XML解析器去解析的,那上面的>去解析肯定会出错了,所以要用实体定义.上面的数据如果用PCDATA表示如下:

if(a&gt;b){
System.out.println(a);
}

 cdata是在XML文档里面使用的关键字,用来告诉浏览器,这部分内容不用解析,是给其他程序用的,比如JAVASCRIPT等等,#PCDATA是在XML约束文档里使用的,如DTD类型的约束文档,在这里面表示元素的内容或属性的取值范围等等,是字符串形式的

关于实体引用,转载了一篇文章解释的比较好:

通过字符和实体引用,可以通过引用将信息加入 XML 文档,而不必直接在文档中键入字符。在下列情况下,这样做很有用:

因为会被解释为标记,字符无法直接输入文档。

因为输入设备的限制,字符无法直接输入文档。

字符无法通过限于单字节字符的处理器可靠地传输。

字符串或文档片断反复出现,并且可以缩写。

为了显示内容,XML 提供了许多语法构造,以“and”符 (&) 开头,以分号 (;)结尾。

通过字符引用,可以插入通过指向 Unicode 代码点的数字标识的 Unicode字符。代码点可以使用十进制或十六进制表示法标识。
& #value;

用于十进制引用的语法。
&# xvalue;

用于十六进制引用的语法。

例如,要插入欧元符号,许多键盘上仍没有该字符,可以将 &#x20AC; 或&#8364; 插入文档。

下表为 XML 标记使用的字符列出了五种内置实体。实体 实体引用 含义

lt
&lt;
<(小于号)

gt
&gt;
>(大于号)

amp
&amp;
&(“and”符)

apos
&apos;
'(撇号或单引号)

quot
&quot;
"(双引号)


如果字符可能会使 XML 分析器错误地解释文档结构,请使用实体,而不要键入字符。&apos; 和&quot; 实体引用最常用在属性值中。

例如,要写入 Me&You,请使用 Me&amp;You。对于a<b,请使用 a&lt;b。对于b>c,请使用 b&gt;c。

还可以定义自己的实体,与 HTML 定义在 HTML 中使用的实体集非常类似。&apos 无法作为HTML 文件识别;在转换为 HTML 时必须使用 $#....。

如果使用的文档类型定义 (DTD) 已定义了实体,可以使用以下语法在文档内容中引用这些实体。

转载自:http://blog.sina.com.cn/s/blog_5d3241cc0100oz31.html


  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值