区分XML中CDATA和#PCDATA

在XML文档中, 能看到“CDATA"的地方有三处:

1)在DTD中,指定标签中某个属性的类型为字符型时,使用CDATA。因为XML解析器回去分析这段字符内容,因而里面如果需要使用>, <, &, ‘, "这5个特殊字符,应当用对应的替代替代字符来表示(必须以&开始,以;结束)。具体如下: 
< - &lt;  (less than) 
> - &gt;  (greater than) 
& - &amp;  (ampersand) 
‘ - &apos;  (apostrophe) 
" - &quot;  (straight double quotation mark)

例如在DTD中声明: 
    <!ATTLIST author period CDATA> 它表示在author这个标签中,period属性应该是字符类型。

2) 在XML中,指定某段内容不必被XML解析器解析时,使用<![CDATA[...]]>。也就是说中括号中的内容解析器不会去分析。所以其中可以包含>, <, &, ‘, "这5个特殊字符。经常把一段程序代码嵌入到<![DATA[...]]>中。 因为代码中可能包含大量的 >, <, &, "这样的特殊字符。

例如在XML中声明: 
    <![CDATA[ 
        if(i<10){ 
          System.out.println("i<10"); 
        } 
    ]]>

3) 在DTD中,指定某个标签中的内容是字符数据时,使用(#PCDATA)。由于它的内容也是需要解析器来解析的,所有仍然需要转换>, <, &, ‘, "这5个特殊字符。

例如在DTD中声明: 
    <!ELEMENT name (#PCDATA)> 它表示在<name>和</name>标签之间可以插入字符或者子标签。

#PCDATA是要给XML解析的数据,如 > 要写成 &gt;才不会出错。 
CDATA区域表示里面是什么数据XML不会解析。

【XML中CDATA与#PCDATA与PACATA的区别】

1. CDATA: Character Data, PCDATA: Parsable

CDATA,是可以分析的字符序列,CDATA就是指字符串,而PCDATA可以是字符串、子元素、字符串和子元素。  

2. CDATA是属性声明中的类型,就是字符串,&、<、“”和‘’ 等都具有特殊含义被解析,例如:"解析为双引号;#PCDATA是元素声明中的类型,指的是混合类型,即可以包子元素也可包含字符串, &和<也是具有特殊含义被解析。 

ANY 并不局限于“#PCDATA”,只是说明该元素可以包含任何内容,一般来讲,解析器无法验证其有效性(一般也不会验证),#PCDATA源于“可解析的字符”,对于有特殊含于的< 会按照子元素开始进行解析。

#PCDATA    该内容模型说明元素中可以同时出现文本和元素.
ANY           ANY关键子表明DTD中声明的任何元素都可以使用作该元素的子元素
CDATA       属性值是字符数据

#PCDATA和ANY用于元素声明
CDATA用于属性声明

时间: 2024-08-02 16:46:22

区分XML中CDATA和#PCDATA的相关文章

xml备忘 DTD PCDATA CDATA

xml不同于html,html用来展示数据,xml用来存储和交换数据. xml不用考虑平台的差别,软硬件的差别,只要能够读取操作文件,就可以处理xml文件,对里面存储的数据进行操作.避免了数据格式不兼容,让不同系统间进行数据交换更加可行 1.注意:实体引用,由于xml需要用一些符号作为区别数据的关键割断符,所以当想把他们只作为字符的时候需要使用实体引用,〈和&这两个必须使用实体引用,其他最好也使用. <<小于  >>大于   &&和号      &a

xml中的&lt;![CDATA[]]&gt;和转义字符

被<![CDATA[]]>这个标记所包含的内容将表示为纯文本,比如<![CDATA[<]]>表示文本内容"<".  此标记用于xml文档中,我们先来看看使用转义符的情况.我们知道,在xml中,"<".">"."&"等字符是不能直接存入的,否则xml语法检查时会报错,如果想在xml中使用这些符号,必须将其转义为实体,如"<".">&

xml中数据存储 &lt;![CDATA[ … ]]&gt;

在xml中  有些可能是 转义的字符  比如像<等  &符号,  你没发现 在加参数后面要进行转义 写成&#26: 可以是&  但是每处都要 这么写.  在未来不可控的 一些转义字符中 你都要这么做,  但是 用<![CDATA[   …  ]]>  规避了 这种可能性,  把它们都当做数据  而不是 可能存在的一些转义 html解释器的概念 <![CDATA[   …  ]]> 标示的内容 可以把转义字符当正常字符, 里面的都默认为数据. 在传输时,

CDATA与PCDATA有什么区别?

xml中 PCDATA表示已解析的字符数据. CDATA是不通过解析器进行解析的文本,文本中的标签不被看作标记. CDATA是属性声明中的类型,就是字符串,&.<.""和'' 等都具有特殊含义被解析,例如:"解析为双引号:#PCDATA是元素声明中的类型,指的是混合类型,即可以包子元素也可包含字符串, &和<也是具有特殊含义被解析. CDATA用于说明属性,PCDATA用于说明元素

xml中的DTD和schema

XML的文档声明<?xml version="1.0" encoding="UTF-8" ?> xml转义字符 <![CDATA[内容]]> 实例: <![CDATA[ <student stuno='s01'> <name>张三</name> <age>23</age> <sex>男<</sex> </student> ]]>

XML中DTD笔记

DTD(文档类型定义)的作用是定义 XML 文档的合法构建模块. 它使用一系列的合法元素来定义文档结构.DTD 可被成行地声明于 XML 文档中,也可作为一个外部引用. 内部的 DOCTYPE 声明 假如 DTD 被包含在您的 XML 源文件中,它应当通过下面的语法包装在一个 DOCTYPE 声明中: <!DOCTYPE 根元素 [元素声明]> 带有 DTD 的 XML 文档实例(请在 IE5 以及更高的版本打开,并选择查看源代码): <?xml version="1.0&qu

android动画具体解释六 XML中定义动画

动画View 属性动画系统同意动画View对象并提供非常多比view动画系统更高级的功能.view动画系统通过改变绘制方式来变换View对象,view动画是被view的容器所处理的,由于View本身没有要操控的属性.结果就是View被动画了.但View对象本身并没有变化. 在Android3.0中,新的属性和对应的getter和setter方法被增加以克服此缺点. 属性动画系统能够通过改变View对象的真实属性来动画Views. 并且.View也会在其属性改变时自己主动调用invalidate(

mybatis xml中特殊字符处理

1,CDATA区: 它的全称为character data,以"<![CDATA[ "开始,以" ]]>" 结束,在两者之间嵌入不想被解析程序解析的原始数据,解析器不对CDATA区中的内容进行解析,而是将这些数据原封不动地交给下游程序处理. 2,特殊字符 : xml 中表示:   <= 小于等于.    >= 大于等于 需加  这样的标记:     <![CDATA[   ]]>      xml中有&的符号,需要 <

XML中的五个保留字符及实体引用

字符名称 字符 实体引用 和 & & 大于号 >  > 小于号 <  < 单引号 ‘ &apos; 双引号 “ " 在XML文档中,构成元素内容或属性的字符一般用它本身表示,但对于XML中的保留字符如“<”,“>”等就不适用了.在XML文档中如果要使用到保留字符的话就要利用实体引用方式来表示.上表列出了XML中的五个保留字符及实体引用. 例:实体引用实例,文件名exa.xml. <?xml version="1.0&qu