]>
用来指定 dtd 的定义,book 表示 XML 文件的根元素是 book, 在其中间的就是对文件的详细定义了。
定义包含文本内容的元素
以下为简单的 XML 文件
轻松学习 XML
可以如下定义
]>
每一个元素如下定义
!ELEMENT 表示要定义元素,后面的圆括号中是元素的定义内容,#PCDATA 表示已经进行解析的文本内容,而且不包含任何类型的子元素
定义包含有子元素的元素
轻松学习 XML
]>
增加了如下一行
元素名称后面的圆括号内用来表示元素的内容。此时表示 booklist 元素有一个 book 子元素。
然后依次定义子元素的类型,定义同前。
多个子元素的定义
]>
1234
多个子元素时,在元素的定义中,依次定义子元素,子元素之间用逗号 ( , ) 分隔。逗号表示子元素出现的先后顺序。在 XML 文件中子元素的使用顺序必须同定义的顺序
如何控制子元素出现的次数
可以在子元素的后面增加控制符号 ? 表示出现 0 次或 1次 * 表示出现 0 次或多次 + 表示出现 1 次或多次
没有控制符号表示必须出现 1 次
| 表示子元素可选
数据类型的定义
前面我们一直使用 #PCDATA 来定义元素的数据内容,其他还有:
EMPTY 表示 空元素,没有数据内容 #PCDATA 表示文本数据的字符串 ANY 表示元素内容可以属于任何数据
在 DTD 中,没有整数,小数,日期,字符串的概念。
属性的定义
定义属性使用如下语法
属性类型有如下十种
CDATA 文本数据字符串 ID 表示唯一的一个号码,而且在整个 XML 文件中不可重复,必须以字母开头 IDREF 表示使用其他元素属性的 ID 值 IDREFS 表示使用多个其他元素的ID值, 多个ID值时,使用空格进行分隔. ENTITY 表示使用预定义好的实体,实体就是定义好名字的一个内容 ENTITYS 表示使用预定义好的一组实体,实体就是定义好名字的一个内容,使用空格分隔
NMTOKEN 关键字的名称,包括字母,数字,和 _ . - :
NMTOKENS 关键字的名称,包括字母,数字,和 _ . - : 使用空格进行分隔 NOTATION 参考的标记声明
(value | value) 选择一个或多个 NMTOKEN 的值
还有一个 xml: DTD 默认的属性
DTD 的默认属性有两个:
xml:space 取值可以是 default 和 presever, 控制空格的处理 xml:lang 指定元素所使用的语言 大陆:zh-CN 台湾:zh-TW
由于可能在 XML 文件中使用多种编码,所以可以在元素的标记中通过 xml:lang 指定此元素所使用的语言,语言通常使用一个两个字符的代码进行表示,这些代码定义在 ISO 639 中。
但是,一些时候,仅仅知道所采用的语言还不够,例如,中文在中国大陆和中国台湾有不同的用法,所以我们还需要知道在哪个地区讲该语言。为了处理这些差别,语言代码后可以跟随任何子代码编号,以进一步指定所采用的语言。如果语言代码为一个 ISO 639代码,则子代码应该是一个两个字母的国家代码,定义在 ISO 3166 中。
语言代码通常小写,国家代码通常采用大写。然而,这只是一种习惯,并非规定。
可以定义同时定义多个属性
属性可以有可选的选项,对属性进行说明
#IMPLIED 表示可选的属性 #REQUIRED 表示必须的属性 #FIXED 固定的属性,用户不可更改
例如,下面的例子中 book 元素有一个 no 的属性,此属性为必写属性。
]>
1234
后面的内容不经常使用,为选读内容。
实体
实体就是语言中的常数,主要用来定义一些重复和常用的文字内容 例如:将公司名称定义为实体
使用时:
通过在实体前加上 &, 后面加上; 来使用
如果实体是在外面文件中定义的话
如果不是文本内容,是二进制的文件,需要说明二进制文件的类别
参数实体用在 DTD 文件中,将常用的内容定义,以便以后使用 通过在实体名称前增加 % 来定义
使用时实体变量时,在变量的前面加上 %, 后面加上 ;
DTD 的标记
用来声明外部的非 XML 数据,以便应用程序知道如何进行处理