DTD (Document Type Definition 文档类型定义)
1.对DTD的初步认识;
一个简单的DTD文件 :
注:这里的"书+"是正则表达式,表示书这个元素至少要出现一次
注:(书名,作者,售价)表示书标记中有这些元素,","表示按顺序出现。
注:#PCDATA 表示内容为普通的文本字符串。
2.在XML文档中引入外部DTD文件;
1)XML文档通过使用DOCTYPE声明语句 (文档类型定义语句) 来指明它所遵循的DTD文件,DOCTYPE声明语句紧跟在XML文档声明语句后面,有两种格式:
(1)
(2)
例如:
(1)
(2)http://java.sun.com/dtd/web-app_2_3.dtd">
2)DTD标记名称应符合一些标准的规定,对于ISO标准的DTD以ISO三个字母开头;被改进的非ISO标准的DTD以加号"+"开头;未被改进的非ISO标准的DTD以减号"-"开头。
3)对于一些已经制定成为了和行业标准的DTD文件,一些相应的解析器程序可能已经将它们内嵌进去,所以在解析时并不一定要从制定的URL上进行下载。
引入外部DTD文件示例:
class1
32
3.在XML文档中直接嵌入DTD定义语句;
就是直接在XML文档的
]>
DTD文件的定义
一:DTD元素定义.
元素定义细节:
1)元素定义的语法格式:
例如:
使用规则:
(#PCDATA) 是 parsed character data (被解析的字符数据) 的简写
(name,sex,age) 元素中嵌入一组子元素
(name,#PCDATA) 元素中的内容还可以是子元素和普通字符串的混合体
EMPLY 表示空元素,这种元素一般写成
的形式
2)DTD使用与XML文档相同的注释方式 :
3)每条元素定义语句的顺序是无关紧要的.
4)具有不同用途的元素不能使用相同的元素名.
5)一个元素的各个组成成分之间可以有各种关系:
表示myfile元素中有三个子元素,这三个子元素可以按任意顺序出现。
表示myfile元素中有三个子元素,且这三个子元素在xml中的出现顺序必须与括号中的出现次序一致 (逗号表示按次序出现)。
表示myfile元素中只能包含这三个子元素中的一个 ("|"表示或的意思)。
6)在元素的使用规则中还可以定义子元素的出现次数:
(person+) (person?) (person*) (person)
注:+表示它所修饰的成分至少出现一次 ; ?表示出现次数最多一次 ; *表示无限制,可以不出现也可以出现 ; 元素上没有使用任何修饰符表示这个元素必须出现且只能出现一次。
7)一个括号()可用于将括在其中的内容组合成一个可统一操作的分组,分组中可以嵌套更小的分组。
如:
二:DTD属性定义.
1.属性定义的语法格式;
属性名1 属性类型 设置说明
属性名2 属性类型 设置说明
...... (注意:这里列出的属性必须属于同一个元素)
例如:
name CDATA #REQUIRED
age CDATA #IMPLIED
注:CDATA是一种属性类型,#REQUIRED和#IMPLIED是设置说明 前者表示属性是必须的,后者表示属性是可有可无的。
>
2.属性定义->设置说明:
(1)#REQUIRED 设置属性为必须属性
(2)#IMPLIED 设置属性为可有可无
(3)#FIXED 设置属性的取值固定为某一个特定的值,还必须为属性提供一个固定的设置值。
示例:job CDATA #FIXED "系统分析师"
(4)使用默认值 属性的设置说明不写前面三种,而是直接写一个默认值,当没有给该属性设值时,会采用默认值。
示例:sex CDATA "男"
3.属性定义->类型:
CDATA 表示属性值的内容为普通的文本字符串,但属性值中出现的特殊字符必须使用相应的转义字符来表示。
ENUMERATED 表示所设置的属性值必须是某一组属性值中的一个(即枚举类型),注意,在定义时是不会出现ENUMERATED关键字的,而是在括号中写上该枚举的所有值,用"|"分隔。
示例:
这里的sex属性是枚举类型,并且为它设置了一个默认值"男"
ID 这种类型用于唯一标识xml中的某个元素,这个xml文档中该属性的设置值不能重复。
IDREF 和 IDREFS
NMTOKEN 和 NMTOKENS
NOTATION
ENTITY 和 ENTITYS
4.DTD实体定义:
1)实体的根本作用是为一段文本内容创建一个别名,以后在XML文档中就可以座次引用这个别名,XML解析器程序将把XML文档中出现的别名引用转变成其所对应的文本内容。
2)在DTD定义中,一条
语句用于定义一个实体。
3)实体可分为两种类型:引用实体和参数实体。
(1)引用实体(用于在xml文档中被引用,实质:将实体的内容插入使用实体的xml文档的写实体名的位置):
语法格式:
引用方式(xml中): &实体名;
例如:
yright SYSTEM "
]>
©right;
(2)参数实体(定义在DTD并且使用在DTD文件中。实质:严格的内容替换的过程):
语法格式:
引用方式(DTD中): %实体名称;
例如: