DTD规范XML文档

 

学  习  目  标

理解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    % 实体名     “实体值”>

 

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值