PCDATA
PCDATA 的意思是被解析的字符数据(parsed character data)。可把字符数据想象为 XML 元素的开始标签与结束标签之间的文本。PCDATA 是会被解析器解析的文本。这些文本将被解析器检查实体以及标记。文本中的标签会被当作标记来处理,而实体会被展开。不过,被解析的字符数据不应当包含任何 & < > 字符;需要使用 &amp; &lt; &gt; 实体来分别替换它们。

CDATA
CDATA 的意思是字符数据(character data)。CDATA 是不会被解析器解析的文本。在这些文本中的标签不会被当作标记来对待,其中的实体也不会被展开。
几个实体引用字符:
&lt; <
&gt; >
&amp; &
&quot; "
&apos; '

又有网上有人这样说,我觉得挺直观,先转过来:
PCDATA表示已解析的字符数据。
CDATA是不通过解析器进行解析的文本,文本中的标签不被看作标记。CDATA表示里面是什么数据XML不会解析,比如

  1. <![CDATA[
  2. if(a>b){
  3. System.out.println(a);
  4. }
  5. ]]>

注意上面的a与b之间的 > 符号.

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

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

CDATA是在XML文档里面使用的关键字,用来告诉浏览器,这部分内容不用解析,是给其他程序用的,比如js代码等。CDATA 部分由 "<![CDATA[" 开始,由 "]]>" 结束:

  1. <script>
  2. <![CDATA[
  3. function matchwo(a,b){
  4. if (a < b && a < 0){
  5. return 1;
  6. }
  7. else{
  8. return 0;
  9. }
  10. }
  11. ]]>
  12. </script>

#PCDATA是在 XML约束文档里使用的,如DTD类型的约束文档,在这里面表示元素的内容或属性的取值范围等等,是字符串形式的

  1. <?xml version="1.0"?>
  2. <!DOCTYPE note [
  3. <!ELEMENT note (to,from,heading,body)>
  4. <!ELEMENT to      (#PCDATA)>
  5. <!ELEMENT from    (#PCDATA)>
  6. <!ELEMENT heading (#PCDATA)>
  7. <!ELEMENT body    (#PCDATA)>
  8. ]>
  9. <note>
  10. <to>George</to>
  11. <from>John</from>
  12. <heading>Reminder</heading>
  13. <body>Don't forget the meeting!</body>
  14. </note>

关于实体引用,转载了一篇文章解释的比较好:
通过字符和实体引用,可以通过引用将信息加入 XML 文档,而不必直接在文档中键入字符。在下列情况下,这样做很有用:
因为会被解释为标记,字符无法直接输入文档。
因为输入设备的限制,字符无法直接输入文档。
字符无法通过限于单字节字符的处理器可靠地传输。字符串或文档片断反复出现,并且可以缩写。为了显示内容,XML 提供了许多语法构造,以“and”符 (&) 开头,以分号 (;) 结尾。
通过字符引用,可以插入通过指向 Unicode 代码点的数字标识的 Unicode 字符。代码点可以使用十进制或十六进制表示法标识。
用于十进制引用的语法:    &#value;
用于十六进制引用的语法:  &#xvalue;

例如,要插入欧元符号,许多键盘上仍没有该字符,可以将 € 或 € 插入文档。
下表为 XML 标记使用的字符列出了五种内置实体。实体 实体引用 含义

实体 实体引用 含义
lt
&lt;
<(小于号)
gt
&gt;
>(大于号)
amp
&amp;
&(“and”符)
apos
&apos;
'(撇号或单引号)
quot
&quot;
"(双引号)

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

例一: 双引号的使用。

双引号作为XML 属性值的开始结束符号,因此无法在值中直接使用"". 处理方式可以分为两种。

a: 属性值中没有'(单引号) ,那么可以用单引号'' 作为属性值的开始结束符号

<add key="IPhone" value="apple"/>  ...属性值为 ("apple").

解决:  <add key="IPhone" value=’"apple"‘/>

b: 属性值中有'(单引号) ,也有双引号。 如...属性值为 ("'apple").

<add key="IPhone" value="&quot;&apos;apple&quot;"/>

xml元素类型PCDATA和CDATA的区别(DTD中)的更多相关文章

  1. XML中PCDATA与CDATA的区别

    XML中PCDATA与CDATA的区别 2011-02-10 19:27:25|  分类: XML |  标签:xml中pcdata与cdata的区别     字号:大中小 订阅 所有 XML 文档中 ...

  2. DTD中的属性类型

    <![CDATA[文本内容]]> DTD中的属性类型 全名:character data 在标记CDATA下,所有的标记.实体引用都被忽略,而被XML处理程序一视同仁地当做字符数据看待, ...

  3. 解决:org.xml.sax.SAXParseException: 元素类型 "head" 必须由匹配的结束标记 "</head>问题

    事件背景: 今天就碰到了这样的问题, org.xml.sax.SAXParseException: 元素类型 "head" 必须由匹配的结束标记 "</head&g ...

  4. org.xml.sax.SAXParseException; lineNumber: 14; columnNumber: 32; 元素类型为 "key" 的内容必须匹配 "(column)*"

    报错:部分错误信息,主要查看CauseBy Caused by: org.hibernate.InvalidMappingException: Unable to read XML at org.hi ...

  5. org.xml.sax.SAXParseException: 元素类型 "input" 必须由匹配的结束标记 "</input>" 终止。

    错误记录 Spring Boot推荐使用thymeleaf作为视图,按照SpringBoot实战一书的案例写Demo. 发生错误: org.xml.sax.SAXParseException: 元素类 ...

  6. mybatis进行mapper.xml测试的时候发生"必须为元素类型 “mapper” 声明属性 “namespace”

    1.Caused by Caused by: org.xml.sax.SAXParseException; lineNumber: 7; columnNumber: 45; 必须为元素类型 " ...

  7. 16.XML语法、CDATA、约束(DTD、Schema)讲解

    xml主要用来描述数据,比如配置文件,网络之间传输数据等,并且在android中也经常用xml来布局,,接下来便来学习xml常用的东西 1.XML语法 xml语法分为: 1.1 文档声明 必须位于文档 ...

  8. 元素(Element)和结点(Node)的区别(org.w3c.dom)

    1.元素(Element)和结点(Node)的区别, 元素是一个小范围的定义,必须是含有完整信息的结点才是一个元素,例如 - . 但是一个结点不一定是一个元素,而一个元素一定是一个结点. 什么是nod ...

  9. 浅谈JS中的!=、== 、!==、===的用法和区别 JS中Null与Undefined的区别 读取XML文件 获取路径的方式 C#中Cookie,Session,Application的用法与区别? c#反射 抽象工厂

    浅谈JS中的!=.== .!==.===的用法和区别   var num = 1;     var str = '1';     var test = 1;     test == num  //tr ...

随机推荐

  1. https页面 和 http请求的问题

    (1)强制升级http 静态资源地址为https地址 https页面中不能使用http请求,http页面中可以使用https请求. 关于在https 页面有一些http的请求,可以在<head& ...

  2. 场景中GameObject无法用代码隐藏问题(setActive为false)

    GameObject不受代码控制隐藏问题:代码中若对某个gameobject.setActive(false),发现会不起作用,总结下来发现是和object所在模型组的Animator组件的anima ...

  3. ACM学习历程—SNNUOJ1215 矩阵2(二分 && dfs)

    http://219.244.176.199/JudgeOnline/problem.php?id=1215 这是这次微软和百度实习面试的一道题,题目大意就是:有一个n*m的矩阵,已知它每一行都是不严 ...

  4. hadoop-hbase学习笔记

    create "t",{NAME=>"t_id"},{NAME=>"t_vl"} describe "t" ...

  5. PCM音量控制

    http://blog.jianchihu.net/pcm-volume-control.html 一.声音的相关概念 声音是介质振动在听觉系统中产生的反应.声音总可以被分解为不同频率不同强度正弦波的 ...

  6. 市场上 MLCC 226 电容现象

    市场上 MLCC 226 电容现象 三星 X7R 1206 没有 16V 也有人在卖. Y5V 当 X7R 卖. X5R 当 X7R 卖. 薄电容当厚的电容卖.

  7. mysql5.6之 传输表空间迁移表或恢复误删除的表

    一,简单说明: 1),传输表空间的限制:  1,mysql 版本 5.6.6 及其以上,并且版本建议源和目标版本建议都是GA版并且大版本一样  2,表引擎为innodb并且开启独立表空间  innod ...

  8. centos6.5 安装gcc 4.9.0

    wget http://gcc.skazkaforyou.com/releases/gcc-4.9.0/gcc-4.9.0.tar.gz  // 下载源码 tar -zxvf gcc-4.9.0 cd ...

  9. 蓝桥杯 算法训练 ALGO-129 特殊的数字四十

    算法训练 特殊的数字四十   时间限制:1.0s   内存限制:256.0MB 特殊的数字四十 问题描述 1234是一个非常特殊的四位数,因为它的各位数之和为10,编程求所有这样的四位十进制数. 输出 ...

  10. openwrt: Makefile 框架分析[转载]

    openwrt目录结构 上图是openwrt目录结构,其中第一行是原始目录,第二行是编译过程中生成的目录.各目录的作用是: tools - 编译时需要一些工具, tools里包含了获取和编译这些工具的 ...