![](https://i-blog.csdnimg.cn/blog_migrate/f0cd6c7f9e7ae96feae062cb48f670f0.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/f0cd6c7f9e7ae96feae062cb48f670f0.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/f0cd6c7f9e7ae96feae062cb48f670f0.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/f0cd6c7f9e7ae96feae062cb48f670f0.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/f0cd6c7f9e7ae96feae062cb48f670f0.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/f0cd6c7f9e7ae96feae062cb48f670f0.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/f0cd6c7f9e7ae96feae062cb48f670f0.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/f0cd6c7f9e7ae96feae062cb48f670f0.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/f0cd6c7f9e7ae96feae062cb48f670f0.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/f0cd6c7f9e7ae96feae062cb48f670f0.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/f0cd6c7f9e7ae96feae062cb48f670f0.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/f0cd6c7f9e7ae96feae062cb48f670f0.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/f0cd6c7f9e7ae96feae062cb48f670f0.gif)
它的一个DTD文档如下:
![](https://i-blog.csdnimg.cn/blog_migrate/f0cd6c7f9e7ae96feae062cb48f670f0.gif)
2
![](https://i-blog.csdnimg.cn/blog_migrate/f0cd6c7f9e7ae96feae062cb48f670f0.gif)
3
![](https://i-blog.csdnimg.cn/blog_migrate/f0cd6c7f9e7ae96feae062cb48f670f0.gif)
4
![](https://i-blog.csdnimg.cn/blog_migrate/f0cd6c7f9e7ae96feae062cb48f670f0.gif)
5
![](https://i-blog.csdnimg.cn/blog_migrate/f0cd6c7f9e7ae96feae062cb48f670f0.gif)
6
![](https://i-blog.csdnimg.cn/blog_migrate/f0cd6c7f9e7ae96feae062cb48f670f0.gif)
7
![](https://i-blog.csdnimg.cn/blog_migrate/f0cd6c7f9e7ae96feae062cb48f670f0.gif)
8
![](https://i-blog.csdnimg.cn/blog_migrate/f0cd6c7f9e7ae96feae062cb48f670f0.gif)
9
![](https://i-blog.csdnimg.cn/blog_migrate/f0cd6c7f9e7ae96feae062cb48f670f0.gif)
10
![](https://i-blog.csdnimg.cn/blog_migrate/f0cd6c7f9e7ae96feae062cb48f670f0.gif)
11
![](https://i-blog.csdnimg.cn/blog_migrate/f0cd6c7f9e7ae96feae062cb48f670f0.gif)
2为DTD定义开始标记,学生名单为其根元素,3到7都是元素定义 ,8是结束标记。下面将介绍一下元素声明的语法及注意事项。
元素声明
格式:<!ELMENT 元素名称 元素的内容格式的定义>
(1)基本元素声明:<!ELMENT 学号 (#PCDATA)> 元素名称后直接跟的是数据类型则为基本元素。
(2)复合元素声明:<!ELMENT 学生 (学号,姓名,班级)> 学生元素是复合元素,它包含学号,姓名,班级三个基本元素。其实根元素是复合元素的一个特例,所有的元素都直接或间接地包含在根元素中。
元素出现次数的控制
加"?"表示些元素可出现0次或1次;加"*"表示可出现任意次;加"+"表示至少要出现一次。如:<!ELMENT 学生 (学号?,姓名,班级,爱好*)>则表示一个学生只有唯一的学号,或者还未分配学号,即学号元素出现0次或1次,而爱好可以没有,也可以有好几方面的,所以用*(任意次)限定。
选择性元素 用"|"限定,如 <!ELMENT 学生(姓名,性别,(优秀|良好|中等))>
属性声明
格式:<!ATTLIST Eltment_name Attribute_name Type [Keyword] [Default_value]>
!ATTLIST 为定义属性的指令,后面是元素的名称,属性名称,属性值类型及默认值的关键字及默认值。
如一个学生有性别及班级两个属性,可这样定义:<!ATTLIST 学生 性别 CDATA "女" 班级 CDATA "计算机03.2班">
必需赋值的属性:加REQUIRED关键字,如:<!ATTLIST 学生 性别 CDATA #REQUIRED "女" 班级 CDATA "计算机03.2班"> 表示必需给出学生的性别值。可有可无的属性则用IMPLIED关键字,固定取值的属性用FIXED关键字。
属性的类型:在XML中共有10种属性类型,如下表:
类型 | 含义 |
CDATA | 字符数据 |
Enumerated | 可能的取值的列表 |
ID | 唯一的数字 |
IDREF | ID类型属性的值 |
IDREFS | 由空格分开的若干个ID |
ENTITY | 实体 |
ENTITYS | 若干个实体 |
NMTOKEN | XML名称 |
NOTATION | DTD中声明的注释名 |
NMTOKENS | 多个XML名称 |