XML文档类型定义DTD

DTD概述

DTD用来定义XML文档的结构,它包含一系列规则说明,以确保XML文档的一致性和有效性
DTD定义了XML文档可用的词汇(元素和属性的名称)和结构:
元素名称,包括根元素
元素的属性及属性的数据类型和取值方式
子元素的名称、顺序、出现次数
元素是否拥有子元素,是否能拥有文本内容,等等
可以用DTD验证XML文档
发现书写错误(命名错误)
检查结构和顺序
检查是否使用了规定的规范文档

DTD的引用

DTD可以是被XML引用的独立的外部文档,也可以嵌入到XML文档中
DTD文档是特殊格式的XML文档 例如,DTD文档student.dtd的内容如下:

嵌入的DTD

]> <班级> <学生> 001 <姓名>王刚 <年龄>2 <电话> <手机>234345456

外部DTD-SYSTEM
在XML文档中声明使用外部DTD文档
例如,XML文档student.xml的内容如下:

<班级> <学生> 001 <姓名>王刚 <年龄>2 <电话> <手机>234345456

外部DTD-PUBLIC
在XML文档中声明使用公共DTD文档 <班级> <学生> 001 <姓名>王刚 <年龄>2 <电话> <手机>234345456

元素Element

ANY:内容中可包含子元素
格式:
示例:<段落>使用<关键词>XML技术
EMPTY:不能包含任何内容
格式:
示例:
#PCDATA:不能包含子元素
格式:
示例:C Language
子元素的顺序和出现频率

其中,修饰符为:
省略:必须出现,且只能出现1次
+:至少出现1次
?:最多出现1次
*:可以不出现,也可以出现多次
示例:
子元素的选择

示例:

]> <我的电脑> <内存><描述>="512MB" <内存/> <硬盘> <分区> <名称>系统盘 <操作系统>Windows 2003 <描述>关于系统盘的任何描述信息

属性列表ATTLIST

ATTLIST定义元素的属性的名称、类型和默认值,可以限制出现次数但不能限制出现顺序
语法:
属性类型
CDATA:一般文本
ID:具有ID属性值,不能重复(唯一性)
IDREF:对ID属性值的引用
IDREFS:对ID属性值列表的引用(用空白分割)
ENTITY:引用未解析的外部实体
ENTITIES:引用ENTITY列表(用空白分割)
NMTOKEN:包含一个有效的XML名称
NMTOKENS:NMTOKEN列表
(属性值[[|属性值]…]):属性为NMTOKEN类型,只能取列表中的值
NOTATION (属性值[[|属性值]…]):属性为NOTATION(已定义的),取值任选其一
属性值说明
#REQUIRED:该属性必须出现
#IMPLIED:该属性是可选的
“默认值”:属性是可选的;若不出现,在验证文档后,元素将隐含该属性,取默认值
#FIXED “固定值”:属性是可选的;若出现,属性值必须取固定值;若不出现,则验证后自动隐含该固定值
例如:

xml

<我的电脑> <内存 容量="512MB"> <描述>Kingmax DDR 4000 <内存 容量="512MB"/> <硬盘 容量="80GB"> <分区 盘符="C"> <名称>系统盘 <操作系统> Windows 2003 <]]>

示例二

]>

xml

<班级> <学生 学号="s05601" 性别="女"> <姓名>王刚 <年龄>2 <电话> <手机>234345456 <学生 学号="S05046" 性别="男" 系别="材料"> <姓名>孙俊 <住址>203房间 <学生 学号="s05603"> <姓名>孙俊 <住址>203房间 <电话> <座机>45655656 <座机>465675 <班长 学号="s05601"/>

注记notation
XML文档可以包含非XML数据(不能由解析器直接处理),例如图像、声音等,需要告知解析器如何调用外部程序处理这些数据,否则就会出错。
NOTATION将非XML数据描述为一种能够被外部程序处理的形式
格式:
例如:
notation实例

实体ENTITY

逻辑上,一个XML文档只有一个根元素,根元素包含所有子元素和内容。但XML文档中可以引用来自其他文档(文件)中的数据(内容),这就是实体。例如,可以将论文标题定义为实体,就可以在文中多次引用,而不必重复输入,也便于修改标题。
实体存储的内容有形式规范的XML、其他形式的文本或二进制数据。实体可以是文件、数据记录或任何包含数据的项目。除了文档实体外,多数实体都有名称。
实体定义在DTD中,在与该DTD关联的XML文档中通过实体引用使用这些实体,XML解析器会在解析标记时,用实体的内容替换实体引用。

普通实体
内部普通实体

例如,
外部普通实体

例如,

其中,FPI是经认可的全球唯一的公共标识符,形如“前缀//使用者标识//文本类//文本描述//语言”
例如,
book_intro.xml文档

<内容简介>适合计算机专业本科学习 ]> <图书> <书名>计算概论(©right;) <作者>张三 &intro;

未解析实体

外部未解析实体可以将非XML文档数据引入XML文档进行处理
引入XMl文档

URI对应XML文档
引入非XML文档

类型声明用于描述文档类型

]>

你可能感兴趣的:(XML文档类型定义DTD)