《第2章 使用DTD规范XML文档》由会员分享,可在线阅读,更多相关《第2章 使用DTD规范XML文档(46页珍藏版)》请在金锄头文库上搜索。
1、第2章 使用DTD规范XML文档,2.1 DTD基本概念,2.1.1 DTD简介对XML文档所作的规范和约定被称为DTD,也就是文档类型定义。可以把DTD看作是编写某类XML文档的一个模板。,在一个DTD中,具体规定了引用该DTD的XML文档可使用哪些标记、父元素中能够包括哪些子元素、各个元素出现的先后顺序、元素可包含的属性、元素和属性值的数据类型,以及可使用的实体及符号规则等。DTD由许多约定和声明语句构成,这些语句可以包含在XML文档内部,被称为内部DTD;也可以独立保存为一个文件,而称为外部DTD。,DTD主要具有下列几方面的作用:可以验证XML文档数据的有效性。可以为某类XML文档提供
2、统一的格式和相同的结构。可以保证在一定范围内,XML文档数据的交流和共享。应用程序设计人员根据DTD就能够知道对应XML文档的逻辑结构,从而编写出相应的处理应用程序。,2.1.2 DTD的基本结构,在一份DTD中,包含了对XML文档所使用的元素、元素间的关系、元素可用的属性、可使用的实体等的定义规则。一份DTD实际上是若干条有关元素、属性、实体等定义和声明语句的集合。,在DTD中可以包含下列各种声明语句:DTD声明开始语句元素类型声明语句属性列表声明语句实体声明语句注释语句,2.2 DTD对元素的声明,2.2.1 元素声明的语法语法:说明:!ELEMENT: 元素声明语句的开始,关键字ELEM
3、ENT必须大写。element_name: 所声明的元素名称。element_definition:对该元素内容的定义,用来规定该元素可以包含的内容。,2.2.2 各种元素的声明,1基本字符元素的声明2含子元素的严格声明2.包含任意内容的声明4子元素出现次数的声明5选择性子元素的声明6空元素的声明7混合型元素的声明8实体的声明,1基本字符元素的声明,只有字符数据,即不包含其它元素 ,2含子元素的严格声明,不能直接包含字符数据,并且元素的名称、顺序必须和声明完全一致 ,2.包含任意内容的声明,可以包含任意的内容,次数和顺序也不受限制 2002年入学的学生20020303,4子元素出现次数的声明,
4、5选择性子元素的声明,在多个指定的子元素中选择其中的一个,6空元素的声明,7混合型元素的声明,既可以包含字符数据,有可以以任意的顺序包含指定的一个或多个子元素,也可以不包含任何内容。,2.2.3 元素声明综合示例,1灵活控制元素出现次数2元素的分组与嵌套,2.3 DTD对属性的声明,2.2.1 属性声明的语法语法:,说明:!ATTLIST:表示属性定义语句的开始,ATTLIST是关键字,必须大写。Element_Name:元素名,用来指定对该元素的属性进行声明。Attribute_Name:该元素具有的某个属性名,属性的命名规则与元素的命名规则是一致的。Type:属性的数据类型。added_d
5、eclare:属性的附加声明,是一个可选项。,2.2.2 属性的附加声明,1#REQUIRED表示在相应的XML文档中该元素的这个属性是必须的,并必须给出一个属性值。2#IMPLIED表示在XML文档中该元素的这个属性是可有可无的。,2.#FIXED AttValue表示在XML文档中该元素的这个属性值是所给定的固定值,不能更改。4Default_Value在属性的附加声明中如果直接给定一个用引号括起来的字符串,表示预设的默认属性值。,2.2.3 属性的各种类型,某个属性的类型(Type)规定了哪种类型的数据可以作为该属性的值。XML规范允许为元素的属性指定10种不同的类型。,属性的各种类型,
6、1CDATA类型2ID类型3. IDREF类型4IDREFS类型5ENTITY类型6ENTITIES类型7NMTOKEN类型8NMTOKENS类型9NOTATION类型10Enumerated类型,1CDATA类型,CDATA指的是纯文本!DOCTYPE 剧本 我可不这么认为!为什么呢?,2ID类型,ID是用属性值的方式为文件中的某个元素定义唯一标识的方法,它的作用类似于HTML文件中的内部链接。在大多数情况下,ID由处理文件的程序或脚本语言使用。!DOCTYPE 联系人列表张三李四libbb.org,2.IDREF类型,IDREF类型允许一个元素的属性使用文件中的另一个元素,方法就是把那个元
7、素的ID标识值作为该属性的取值!DOCTYPE 联系人列表张三李四,4IDREFS类型5ENTITY类型6ENTITIES类型,IDREFS :空格也是合法字符ENTITY:该属性提供把外部二进制数据和 不可析实体链接到文档中的能力。ENTITYS:若干由空格分隔的不可析实体名 组成ENTITYS类型属性的值,7NMTOKEN类型8NMTOKENS类型,类型NMTOKEN和NMTOKENS是诸多属性类型中面向处理程序的又一个类型。这两个类型用于指示一个有效的名字。 XML文件:blah blah blah,9NOTATION类型,NOTATION类型允许属性值为一个DTD中声明的符号 。当一个
8、实体是不可拆解的实体时,由于XML校验器无法解读,所以必须声明它的格式来源或类型。要使用NOTATION类型作为属性的类型,定义的形式是: 属性值类型声明 ,在下面这个例子中,为“电影”元素指定了两种可选设备:一种是movPlayer.exe,用来播映.mov文件,另一种则用来绘制GIF图象。!DOCTYPE 文件 ,10Enumerated类型,属性也可以被描述为一组可接受的取值的列表,XML文件中对属性的赋值将从这个列表中选取一个值。这类属性属于枚举类型ENUMERATED,不过,关键字ENUMERATED是不出现在DTD定义中的。!DOCTYPE 购物篮 ,2.4 DTD的引用,2.4.1 引用内部DTD语法:其中:!DOCTYPE:表示DTD声明的开始,关键字DOCTYPE必须大写。根元素名称:指定XML文档的根元素名称,这个根元素名称必须精确地与文档中实际的根元素名称一致。,