Xml的DTD

来源:互联网 发布:淘宝客服学历要求 编辑:程序博客网 时间:2024/05/17 07:23

一、DTD的作用

1.验证接收到的数据是否有效

2.用于验证自己的数据

3.定义XML文档的合法构建快

4.使用一系列合法元素来定义文档结构

二、使用DTD的好处

1.用DTD提供统一格式

2.用DTD验证数据有效性

3.根据DTD编写文档样式单

三、引入DTD的方式

1.内部DTD

<!DOCTYPE 根元素名称 [

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

]>

2.外部DTD

<!DOCTYPE 根元素名 SYSTEM "URL">

URL   表示DTD文件的路径,可以是绝对路径、也可以是相对路径。

注意:引入外部DTD时还应注意编码方式应与Xml文件相同

3.公用DTD

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

DTD-NAME 要引用的DTD的名称

DTD-URL 要引用的DTD的路径

四、DTD对元素的声明

声明Xml元素的语法格式:

<!ELEMENT 元素名 元素内容>

1.元素声明以"<!"开始,以">"结束

2.元素声明指令"ELEMENT"为关键字,必须大写

3.元素名:为当前元素指定的元素名称

4.元素内容:用来指定元素的内容类型,他可以分为EMPTY(空)、子元素类型、混合型、ANY(任意)和#PCDATA 五种类型。

混合内容元素的定义

<!ELEMENT 学生(#PCDATA|学号|姓名)*>

解释:学生是混合内容元素,可以包含字符串,也可以包含学号、姓名这两个元素,并且这两个元素出现的顺序和次数没有限制。

五、各个元素之间的几种逻辑关系

1.有序的子元素

<!ELEMENT 学生 (学号,姓名,年龄,性别)>

有序的子元素:用英文逗号作为子元素之间的分隔符,表示元素之间必须遵守所定义的顺序,

2.互斥的子元素

<!ELEMENT 性别 (|)>

互斥的子元素:用竖线作为子元素之间的分隔符,表示一系列的元素之间只能出现其中的一个。

3.无序的子元素

无序的子元素:用“|”和“*”、“+”配合实现。

<!ELEMENT 超市 (商品|管理员)*>

表示商品和管理员出现的次数和位置没有限制。

<!ELEMENT 超市 (商品|管理员)+>

表示商品和管理员出现的位置没有限制,但两个里面最少出现一个。

六、DTD中表示频率的特殊标记

1. + 表示子元素可以出现一次或多次

2. * 表示子元素可以出现零次和多次

3. ? 表示子元素可以出现零次或一次

如果在定义子元素时,没有在子元素后指定任何表示频率的特殊标记,则表明这些子元素只能出现一次,且必须一次。

七、DTD对属性声明 

声明属性的方式:

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

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

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

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

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

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

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

#IMPLIED: 表示该属性是可有可无的

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

DTD支持的属性类型

字符类型

<! ATTLIST  学生 姓名 CDATA   #REQUIRED>

枚举类型

<!ATTLIST 学生 姓别(|) #REQUIRED>

ID类型

<!ATTLIST 学生 学号 ID #REQUIRED>

IDREF类型

<!ATTLIST 学生 考号 IDREF #IMPLIED>

IDREFS类型

<!ATTLIST 学校 学生 IDREFS #IMPLIED>

NMTOKENNMTOKENS类型

NMTOKEN是一个比ID类型更宽松的类型,它只要求该属性是个合法的XML标识。它也是字符串数据,但是约束比CDATA约束要严格,它要求出现的字符要少。

八、实体

解释:所谓定义实体引用就是用一个字符串代替另一个字符串。

作用:

1.提高代码的复用,方便修改,维护XML文档。

2.使用默写特殊的符号,这些特殊的符号可能会使XML解析混淆。

3.减少字符出入量,如果某个字符串特别长,而且需要经常使用,则可以定义为实体。

九、实体的分类

1.按照实体的具体内容:可解析、不可解析

2.按照逻辑储存:内部实体、外部实体

3.按照使用范围:一般实体、参数实体

十、定义实体

1.普通实体

定义格式:<! ENTITY  实体名   “实体值”>

使用格式:&实体名;

2.参数实体

定义格式:<! ENTITY  % 实体名   “实体值”>

使用格式:%实体名;

注意:实体跟变量其实很相似,包括他的使用方法,一定要注意实体也是先定义后使用

3.外部普通实体

定义格式:<! ENTITY    实体名  SYSTEM  “实体值所在文件的URI>

<! ENTITY   实体名  PUBLIC “公用实体标识名”  “实体值所在文件的URI>

使用格式:&实体名;

4.外部参数实体

定义格式:<!ENTITY %实体名 SYSTEM|PUBLIC[“公用实体标识名”]  “实体值所在文件的URI>

使用格式:%实体名;

原创粉丝点击