xml(2)

来源:互联网 发布:淘宝哪个玩具店好 编辑:程序博客网 时间:2024/05/01 19:02
 

Dtd的分类

Ø    内部DTD  所谓内部DTD是指DTD与XML数据定义放在同

Ø  一份文档中,即将DTD定义在XML文档内部。内

Ø  部DTD紧跟在XML声明和处理指令之间。

Ø    文档类型声明以“<!DOCTYPE>” 开始,以“]>

Ø  结束。在XML处理指令和根元素之间定义。

Ø  如下:

Ø  < ? xml version=”1.0” encoding=”GB2312” standalone=”yes” ?>

Ø  <! DOCTYPE 根元素名称 [

Ø     <! ELEMENT  子元素名称 (#PDATA)>

Ø  ]>

Ø   

Ø  外部DTD  外部文件类型定义存在于独立文件中,文件扩

Ø  展名为“.dtd”。外部DTD的好处是:可以方便地

Ø  被多个XML文档共享,只需要定义一份DTD文

Ø  档,即可为多个XML文档定义语义约束。

Ø <!DOCTYPE  根元素名  SYSTEM " DTD-URL ">

Ø  公用DTD  有一种外部DTD,是由某个权威机构制定,供

Ø  特定行业或公司,这种DTD又被称为公用DTD。

Ø <!DOCTYPE  根元素名  PUBLIC  " DTD-NAME “  “DTD-URL”>

公用DTD与外部DTD区别在于:公用DTD使用PUBLIC代替了原来的SYSTEM,并增加了DTD标识名。

Ø  注意:0到多个<!ELEMENT….>定义,每个<!ELEMENT….>定义一个XML元素

Ø  0到多个<!ATTLIST….>定义,每个<!ATTLIST….>定义一个XML元素定义了一个属性

Ø  0到多个<!ENTITY….>定义,每个<!ENTITY….>定义一个实体

Ø  0到多个<!NOTATION….>定义,每个<!NOTATION….>定义一个符号

Ø   

DTD对元素声明【重点掌握】

使用ELEMENT声明XML元素的语法,语法格式如下:

<!ELEMENT    元素名   元素内容>

Ø    元素声明以“<!”开始,以“>”结束

Ø  元素声明指令“ELEMENT”为关键字,必须大写

Ø  元素名:为当前元素指定的元素名称

Ø  元素内容: 元素名后面的内容用来指定元素的内容类型,它可以分为EMPTY(空)、子元素类型,混合型、ANY(任意)和#PCDATA 5种类型。

定义空元素类型—EMPTY

<!ELEMENT     元素名     EMPTY>

定义任意类型的元素

<!ELEMENT   元素名   ANY>

定义字符串内容的元素

<!ELEMENT   元素名   #PCDATA>

定义混合内容元素

      <!ELEMENT 父元素名 (#PCDATA|子元素1|子元素2|子元素3…..)*>

注意:

Ø  #PCDATA必须放在最前面

Ø  #PCDATA和各子元素之间只能用竖线(|)分割

Ø  子元素1,子元素2和子元素3之间的竖线(|)并不是表示互斥,而只是表  示这些元素能无序的重复出现,而且次数不受限制

Ø  不要试图在各个子元素之后添加?,*。+等表示频率的修饰符

Ø 定义子元素

Ø  有序的子元素

Ø  互斥的子元素

Ø 无序的子元素

 

有序的子元素

用英文逗号(,)作为子元素之间的分隔符,则子

元素之间必须遵守所定义的顺序。

互斥的子元素

      互斥的子元素表明一系列子元素之间只能出现

其中一次。互斥子元素使用竖线(|)分隔,以竖

线(|)分隔的多个元素只能出现其中之一

实例

      <?xml version="1.0" encoding="GB2312"?>

<!ELEMENT 书籍列表 (计算机书籍)*>

<!ELEMENT 计算机书籍 (书名|作者|价格|简要介绍)>

<!ELEMENT 书名 (#PCDATA)>

<!ELEMENT 作者 (#PCDATA)>

<!ELEMENT 价格 (#PCDATA)>

<!ELEMENT 简要介绍 (#PCDATA)>

 

DTD对属性声明【重点掌握】

在 DTD 中,属性通过 ATTLIST 声明来进行声明。一个属性声明可以声明一个元素的多个属性。

<! ATTLIST 元素名 属性名 属性类型  [属性限定条件] [默认值]>

“属性限定条件”和“默认值‘两部分是可选的吗,有下面几种情况

Ø  在没有指定“元素对属性的约束”时,必须为该属性指定“默认值”;

Ø  当“元素对属性的约束”是#REQUIRED时,不能为该属性指定“默认值”;

Ø  当“元素对属性的约束”是“IMPLIED”时,不能为该属性指定“默认值”;

Ø  当“元素对属性的约束”是“FIXED”时,必须为该属性指定“默认值”;

对属性的限定条件

v  #REQUIRED: 必须的属性,意味着必须为该元素提供该属性

v  #IMPLIED: 该属性是可有可无的

v  #FIXED: 该属性的值是固定的,定义是必须制定固定值。使用该元素时无需为其分配该属性,XML处理器会自动为给属性增加固定值

属性类型

含义

CDATA

值为字符串数据

(en1|en2|..)

此值是枚举列表中的一个值

ID

该属性值必须是有效地标识符,在XML文档时唯一的

IDREF

值为另外一个元素的 id属性值

IDREFS

值必须引用自多个已经有的ID属性值,多个ID属性值用空格隔开

NMTOKEN

值为合法的 XML 名称

NMTOKENS

值为多个合法的 XML 名称的列表

ENTITY

值是一个外部实体,如图片支持

ENTITIES

值是一个实体列表,多个实体之间以空格隔开

NOTATION

该属性值是在DTD中声明过的符号,这个是过期的,不要使用

枚举类型

声明了属性的备选值列表,属性必须从该列表

中选择一个值作为属性值。

<?xml version="1.0" encoding="GB2312"?>

<!ELEMENT 购物车 (肉* , 水果*)>

<!ELEMENT 肉 EMPTY>

<!ELEMENT 水果 EMPTY>

<!ATTLIST 肉 类型 (鸡肉|牛肉|猪肉|鱼肉) #REQUIRED>

<!ATTLIST 水果 类型 (苹果|梨|桔子) #REQUIRED>