学 习 目 标
理解DTD的基本概念
掌握DTD声明XML元素的方法
掌握DTD声明属性的方法
理解实体的概念及作用
DTD简介
DTD是一套关于标记的语法规则,它定义了文档的逻辑
结构,规定了文档中所使用的元素、实体、元素的属性、
元素与实体之间的关系。DTD告诉你可以在哪些文档中使
用哪些标记,各标记出现的次序,哪些标记出现在哪些标
记中,哪些标记有属性等等。
DTD是XML文件的验证机制,定义好DTD,就可以使用
XML解析器对编写好的XML文档进行DTD检查,判断XML
文档内容是否为有效的XML文档内容
引入DTD
使用DTD定义了合法的语义约束后,必须让XML
文档引入该语义约束,以表明该XML文档遵守哪种
语义约束。在XML文档中引入DTD主要有3种方式:
内部DTD
外部DTD
公用DTD
内部DTD
所谓内部DTD是指DTD与XML数据定义放在同
一份文档中,即将DTD定义在XML文档内部。内
部DTD紧跟在XML声明和处理指令之间。
文档类型声明以“<!DOCTYPE>” 开始,以“]>”
结束。在XML处理指令和根元素之间定义
外部DTD
外部文件类型定义存在于独立文件中,文件扩
展名为“.dtd”。外部DTD的好处是:可以方便地
被多个XML文档共享,只需要定义一份DTD文
档,即可为多个XML文档定义语义约束
公用DTD
有一种外部DTD,是由某个权威机构制定,供
特定行业或公司,这种DTD又被称为公用DTD
DTD文档的结构
DTD文档并不是XML文档,而只是为XML定义语义
约束的文档。DTD文档有如下结构:
第1行是DTD声明部分,该声明与XML声明的语法相同
0到多个注释部分,DTD注释与XML注释的语法完全相同
0到多个<!ELEMENT….>定义,每个<!ELEMENT….>定义一个XML元素
0到多个<!ATTLIST….>定义,每个<!ATTLIST….>定义一个XML元素定义了一个属性
0到多个<!ENTITY….>定义,每个<!ENTITY….>定义一个实体
0到多个<!NOTATION….>定义,每个<!NOTATION….>定义一个符号
有序的子元素
用英文逗号(,)作为子元素之间的分隔符,则子
元素之间必须遵守所定义的顺序
互斥的子元素
互斥的子元素表明一系列子元素之间只能出现
其中一次。互斥子元素使用竖线(|)分隔,以竖
线(|)分隔的多个元素只能出现其中之一
无序的子元素
从理论上讲,DTD没有专门为定义无序子元素
提供语法,如果希望使用DTD来表示某个元素之
内可以接受无序的子元素。
对属性的限定条件
#REQUIRED: 必须的属性,意味着必须为该元素提供该属性
#IMPLIED: 该属性是可有可无的
#FIXED: 该属性的值是固定的,定义是必须制定固定值。使用该元素时无需为其分配该属性,XML处理器会自动为给属性增加固定值
定义实体
实体的概念
实体是包含了文档片段的虚拟存储单元,可用来存储
XML声明、DTD、其他形式的文本及二进制数据等。简
单来讲就是一段代码或数据的代称,这个代称即为实体
的名字。
实体的分类
按照实体的具体内容来分类,实体可分为可解析与不可解析两类
按照逻辑存储来分类,实体可分为内部实体与外部实体两类
按照使用的范围来分类,实体可分为一般实体与参数实体两类
定义普通实体
<! ENTITY 实体名 “实体值”>
定义参数实体
<! ENTITY % 实体名 “实体值”>
880

被折叠的 条评论
为什么被折叠?



