使用DTD规范XML文档_第1页
使用DTD规范XML文档_第2页
使用DTD规范XML文档_第3页
使用DTD规范XML文档_第4页
使用DTD规范XML文档_第5页
已阅读5页,还剩46页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、Page 1DTDDTD基本概念基本概念3.1DTDDTD对元素的声明对元素的声明3.2 DTD DTD对属性的声明对属性的声明3.3 DTD DTD的引用的引用3.4 XML Schema XML Schema简介简介3.6 实体的声明与引用实体的声明与引用3.5Page 23.1.1 DTD简介简介对对XML文档所作的规范和约定被称为文档所作的规范和约定被称为DTD,也就是文档类型定义。可以把也就是文档类型定义。可以把DTD看作是看作是编写某类编写某类XML文档的一个模板。文档的一个模板。Page 3在一个在一个DTD中,具体规定了引用该中,具体规定了引用该DTD的的XML文档可使用哪些标

2、记、父元素中能够包括哪些子文档可使用哪些标记、父元素中能够包括哪些子元素、各个元素出现的先后顺序、元素可包含的元素、各个元素出现的先后顺序、元素可包含的属性、元素和属性值的数据类型,以及可使用的属性、元素和属性值的数据类型,以及可使用的实体及符号规则等。实体及符号规则等。DTD由许多约定和声明语句构成,这些语句可以由许多约定和声明语句构成,这些语句可以包含在包含在XML文档内部,被称为内部文档内部,被称为内部DTD;也可;也可以独立保存为一个文件,而称为外部以独立保存为一个文件,而称为外部DTD。Page 4DTD主要具有下列几方面的作用:主要具有下列几方面的作用:可以验证可以验证XML文档数

3、据的有效性。文档数据的有效性。可以为某类可以为某类XML文档提供统一的格式和相文档提供统一的格式和相同的结构。同的结构。可以保证在一定范围内,可以保证在一定范围内,XML文档数据的文档数据的交流和共享。交流和共享。应用程序设计人员根据应用程序设计人员根据DTD就能够知道对就能够知道对应应XML文档的逻辑结构,从而编写出相应文档的逻辑结构,从而编写出相应的处理应用程序。的处理应用程序。Page 53.1.2 DTD的基本结构的基本结构在一份在一份DTD中,包含了对中,包含了对XML文档所使用文档所使用的元素、元素间的关系、元素可用的属性、的元素、元素间的关系、元素可用的属性、可使用的实体等的定义

4、规则。一份可使用的实体等的定义规则。一份DTD实实际上是若干条有关元素、属性、实体等定际上是若干条有关元素、属性、实体等定义和声明语句的集合。义和声明语句的集合。书中的书中的DTDDemo_01.xml是一个包含内部是一个包含内部DTD声明的完整声明的完整XML文档。文档。Page 6根据能否对根据能否对XML文档进行约束模式校验,文档进行约束模式校验,可以将解析器分为两类:可以将解析器分为两类:1.非校验解析器,如非校验解析器,如IE2.校验解析器校验解析器Page 7IE5以上的浏览器内置了以上的浏览器内置了XML解析工具:解析工具:Microsof.XMLDOM,开发人员可以编写,开发人

5、员可以编写JavaScript代码,代码,利用这个解析工具装载利用这个解析工具装载XML文件,并对文件,并对XML文件进行文件进行DTD验证。验证。1.创建创建XML文档解析器对象文档解析器对象var xmldoc = new ActiveXObject(Microsoft.XMLDOM);2.开启开启XML校验校验xmldoc.validateOnParse=true;3.装载装载XML文档文档xmldoc.load(“book.xml);4.获取错误信息获取错误信息 var reson = xmldoc.parseError.reason; var line = xmldoc.parseE

6、rror.line;Page 8DTD约束文档可以在约束文档可以在XML中直接定义也可中直接定义也可以单独编写(单独编写的以单独编写(单独编写的DTD必须以必须以UTF-8保存)保存)Page 9引入外部的引入外部的DTD文档来约束当前的文档来约束当前的XML文档文档 有两种方式:有两种方式:1 DTD文件在本地:文件在本地:2 DTD文件在网络上:文件在网络上:Page 10在在DTD中可以包含下列各种声明语句:中可以包含下列各种声明语句:DTD声明开始语句声明开始语句元素类型声明语句元素类型声明语句属性列表声明语句属性列表声明语句实体声明语句实体声明语句注释语句注释语句Page 113.2

7、.1 元素声明的语法元素声明的语法语法:语法:说明:说明:!ELEMENT: 元素声明语句的开始,元素声明语句的开始,关键字关键字ELEMENT必须大写。必须大写。element_name: 所声明的元素名称。所声明的元素名称。element_definition:对该元素内容的定义,:对该元素内容的定义,用来规定该元素可以包含的内容。用来规定该元素可以包含的内容。例例:Page 123.2.2 各种元素的声明各种元素的声明1基本字符元素的声明基本字符元素的声明2含子元素的严格声明含子元素的严格声明3包含任意内容的声明包含任意内容的声明4子元素出现次数的声明子元素出现次数的声明5选择性子元素的

8、声明选择性子元素的声明6空元素的声明空元素的声明7混合型元素的声明混合型元素的声明8实体的声明实体的声明Page 13语法:语法:指示元素的主体内容只能是普通的文指示元素的主体内容只能是普通的文本本.(Parsed Character Data) Page 14语法:语法:(子元素子元素):指示元素中包含的子元素指示元素中包含的子元素 如果子元素用逗号分开,说明必须按照声明如果子元素用逗号分开,说明必须按照声明顺序去编写顺序去编写XML文档文档Page 15语法:语法: ANY:用于指示元素的主体内容为任意类型用于指示元素的主体内容为任意类型 Page 16语法:语法:语法:语法:(子元素子元

9、素):指示元素中包含的子元素指示元素中包含的子元素 用无符号、用无符号、+、*、?来表示元素出现的次数(与、?来表示元素出现的次数(与正则表达式一致)正则表达式一致)1 无符号:只能出现一次无符号:只能出现一次2 +:表示一次到多次,至少有一次:表示一次到多次,至少有一次3 ?:?:0次或者次或者1次次4 *:随便次数:随便次数Page 17语法:语法:语法:语法:(子元素子元素):指示元素中包含的子元素指示元素中包含的子元素 1如果子元素用如果子元素用“|”分开,说明任选其一。分开,说明任选其一。Page 18语法:语法: EMPTY:指示元素的不能有主体内容。指示元素的不能有主体内容。 P

10、age 19如果元素拥有混合的内容,它可以包含字如果元素拥有混合的内容,它可以包含字符数据。而且如果你在宣告中设定一个或符数据。而且如果你在宣告中设定一个或多个子元素型态,它可以包含那些子元素多个子元素型态,它可以包含那些子元素的任何一个,以任何的顺序,以及任何次的任何一个,以任何的顺序,以及任何次数的重复(零或多个)。换言之,利用混数的重复(零或多个)。换言之,利用混合内容你可以限制子元素的型态,但你无合内容你可以限制子元素的型态,但你无法限制子元素型态出现的顺序或次数,也法限制子元素型态出现的顺序或次数,也不能强制特定子元素型态。不能强制特定子元素型态。 Page 20要宣告混合内容的元素

11、型态,你可以使用下列两要宣告混合内容的元素型态,你可以使用下列两种内容模型格式的任何一种:种内容模型格式的任何一种: 1 只有字符数据只有字符数据 。要宣告只包含字符数据的元。要宣告只包含字符数据的元素型态,使用内容模型(素型态,使用内容模型(#PCDATA)。例如,)。例如,下面的宣告让下面的宣告让SUBTITLE 元素只能包含字符数据:元素只能包含字符数据: 根据这个宣告,下面两个元素都是有效的:根据这个宣告,下面两个元素都是有效的:A New Approach Page 21字符数据加上额外的子元素字符数据加上额外的子元素 。要宣告一个可以。要宣告一个可以包含字符数据加上零个或多个子元素

12、的元素型态,包含字符数据加上零个或多个子元素的元素型态,在内容模型中将每一个子元素列在在内容模型中将每一个子元素列在#PCDATA 之之后,利用后,利用 | 字符来分隔每个项目,并在整个内字符来分隔每个项目,并在整个内容模型之后加入星号容模型之后加入星号( * )。在内容模型中每一个。在内容模型中每一个元素的名称只能出现一次。例如,下面的宣告允元素的名称只能出现一次。例如,下面的宣告允许许TITLE 元素可以包含字符数据,另外加上零元素可以包含字符数据,另外加上零或多个或多个SUBTITLE 子元素:子元素: Page 223.2.3 元素声明综合示例元素声明综合示例1灵活控制元素出现次数灵活

13、控制元素出现次数2元素的分组与嵌套元素的分组与嵌套Page 233.3.1 属性声明的语法属性声明的语法语法:语法:Page 24说明:说明:!ATTLIST:表示属性定义语句的开始,:表示属性定义语句的开始,ATTLIST是关键字,必须大写。是关键字,必须大写。Element_Name:元素名,用来指定对该元素的:元素名,用来指定对该元素的属性进行声明。属性进行声明。Attribute_Name:该元素具有的某个属性名,:该元素具有的某个属性名,属性的命名规则与元素的命名规则是一致的。属性的命名规则与元素的命名规则是一致的。Type:属性的数据类型。:属性的数据类型。added_declar

14、e:属性的附加声明,是一个可选:属性的附加声明,是一个可选项。项。Page 253.3.2 属性的附加声明属性的附加声明1#REQUIRED表示在相应的表示在相应的XML文档中该元素的这个属文档中该元素的这个属性是必须的,并必须给出一个属性值。性是必须的,并必须给出一个属性值。2#IMPLIED表示在表示在XML文档中该元素的这个属性是可文档中该元素的这个属性是可有可无的。有可无的。Page 263#FIXED AttValue表示在表示在XML文档中该元素的这个属性值是文档中该元素的这个属性值是所给定的固定值,不能更改。所给定的固定值,不能更改。4Default_Value在属性的附加声明中

15、如果直接给定一个用在属性的附加声明中如果直接给定一个用引号括起来的字符串,表示预设的默认属引号括起来的字符串,表示预设的默认属性值。性值。Page 273.3.3 属性的各种类型属性的各种类型某个属性的类型(某个属性的类型(Type)规定了哪种类型)规定了哪种类型的数据可以作为该属性的值。的数据可以作为该属性的值。XML规范允规范允许为元素的属性指定许为元素的属性指定10种不同的类型。种不同的类型。Page 281CDATA类型类型2ID类型类型3IDREF类型类型4IDREFS类型类型5ENTITY类型类型6ENTITIES类型类型7NMTOKEN类型类型8NMTOKENS类型类型9NOTA

16、TION类型类型10Enumerated类型类型Page 293.4.1 引用内部引用内部DTD语法:语法:其中:其中:!DOCTYPE:表示:表示DTD声明的开始,关键字声明的开始,关键字DOCTYPE必须大写。必须大写。根元素名称:指定根元素名称:指定XML文档的根元素名称,这文档的根元素名称,这个根元素名称必须精确地与文档中实际的根元素个根元素名称必须精确地与文档中实际的根元素名称一致。名称一致。Page 30DTD声明语句序列:包含在一对方括声明语句序列:包含在一对方括号(号( )之内的若干条语句,用来对)之内的若干条语句,用来对XML文档中所使用的元素、属性和实文档中所使用的元素、属

17、性和实体等进行具体声明。体等进行具体声明。注意:在注意:在XML文档中引用内部文档中引用内部DTD时,时,应该在文档开头的应该在文档开头的XML声明语句中添声明语句中添加加 standalone=yes 的说明。的说明。Page 313.4.2 引用外部引用外部DTD1外部外部DTD的创建的创建外部外部DTD是一个独立于是一个独立于XML文档的文件,文档的文件,使用使用 .dtd为其文件扩展名。此种文件实际为其文件扩展名。此种文件实际上也是一个文本文件,可用任何文本编辑上也是一个文本文件,可用任何文本编辑器创建。器创建。在外部在外部DTD中,除了没有内部中,除了没有内部DTD中的中的“!DOC

18、TYPE 根元素名称根元素名称”语句之外,语句之外,其他声明语句都是一样的。其他声明语句都是一样的。Page 322外部外部DTD的引用的引用根据外部根据外部DTD性质的不同,又可将其分为性质的不同,又可将其分为私有私有DTD文件和公共文件和公共DTD文件。私有文件。私有DTD文件是指并未公开的文件是指并未公开的DTD文件,通常属于文件,通常属于某个组织内部或个人所有;公共某个组织内部或个人所有;公共DTD文件文件则是为某一应用领域或行业所制定,被国则是为某一应用领域或行业所制定,被国际上的标准组织或行业组织广泛认可的、际上的标准组织或行业组织广泛认可的、公开的、标准的公开的、标准的DTD文件

19、。文件。Page 33引用私有引用私有DTD文件的语法格式为:文件的语法格式为:引用公共引用公共DTD文件的语法格式为:文件的语法格式为:注意:在注意:在XML文档中引用外部文档中引用外部DTD时,应该在时,应该在开头的开头的XML声明语句中添加声明语句中添加standalone=no 说说明。明。Page 343.4.3 混合引用混合引用DTD混合引用混合引用DTD是指:在一个带有内部是指:在一个带有内部DTD的的XML文档中,再引用一个或多个外部文档中,再引用一个或多个外部DTD来共同规范文档中的内容。来共同规范文档中的内容。Page 353.5.1 实体的概念与分类实体的概念与分类1实体

20、的概念实体的概念 在在XML规格书中,实体(规格书中,实体(Entity)一)一词具有广泛的含义,通常是指与词具有广泛的含义,通常是指与XML文档文档相关的任何下列型式的储存单元。相关的任何下列型式的储存单元。Page 36有效的有效的XML文档本身文档本身外部的外部的DTD子集子集定义成定义成DTD中外部实体的外部文中外部实体的外部文档档在在DTD中定义的用引号括起来的中定义的用引号括起来的字符串字符串Page 372实体的分类实体的分类一般实体:用来替代文档具体内容的实体。一般实体:用来替代文档具体内容的实体。参数实体:只能在外部参数实体:只能在外部DTD中定义和引用的实体,中定义和引用的

21、实体,不能在不能在XML文档中引用。文档中引用。内部实体:所定义的实体内容并不涉及外部文档。内部实体:所定义的实体内容并不涉及外部文档。外部实体:所定义的实体内容为外部独立存在的外部实体:所定义的实体内容为外部独立存在的文件。文件。可解析实体:包含字符、数字、文本块或标记的可解析实体:包含字符、数字、文本块或标记的实体。实体。不可解析实体:包含图片、声音等其他二进制数不可解析实体:包含图片、声音等其他二进制数据的实体。据的实体。Page 383.5.2 内部一般实体内部一般实体 内部一般实体是指在内部一般实体是指在DTD中定义的一段具体中定义的一段具体文字内容,通常在文字内容,通常在XML文档

22、的元素中引用,也文档的元素中引用,也可在可在DTD语句中引用。语句中引用。在在DTD中声明内部一般实体的语法:中声明内部一般实体的语法: 说明:说明:!ENTITY :表示开始声明一个实体,关键字:表示开始声明一个实体,关键字ENTITY必须大写。必须大写。Entity_Name :表示实体的名称。:表示实体的名称。Entity_Value :表示实体的具体内容。:表示实体的具体内容。Page 39在在XML文档或者文档或者DTD中引用内部中引用内部一般实体的语法:一般实体的语法:&Entity_Name;Page 403.5.3 外部一般实体外部一般实体 外部实体所对应的内容通常为一

23、个独外部实体所对应的内容通常为一个独立存在的文件,在立存在的文件,在DTD中定义某个外部实中定义某个外部实体时需要指定该实体所对应文件的体时需要指定该实体所对应文件的URL。在在DTD中定义外部一般实体的语法:中定义外部一般实体的语法:Page 41说明:说明:!ENTITY :表示开始声明一个实体,关:表示开始声明一个实体,关键字键字ENTITY必须大写。必须大写。Entity_Name :表示外部实体的名称。:表示外部实体的名称。SYSTEM :是定义为外部实体的关键字。:是定义为外部实体的关键字。Entity_URL :该实体所对应文件的:该实体所对应文件的URL。在在XML文档中引用外

24、部一般实体的语法:文档中引用外部一般实体的语法:&Entity_Name;Page 423.5.4 内部参数实体内部参数实体参数实体的内容不仅可以包含文本,还可以包含参数实体的内容不仅可以包含文本,还可以包含元素类型声明、属性列表声明、一般实体声明、元素类型声明、属性列表声明、一般实体声明、标签声明、处理指令或注释等。参数实体只能在标签声明、处理指令或注释等。参数实体只能在DTD中引用,通常情况下只能在外部中引用,通常情况下只能在外部DTD文档中文档中引用。引用。Page 43声明内部参数实体的语法:声明内部参数实体的语法:说明:说明:!ENTITY :表示开始声明一个实体,关键字:表

25、示开始声明一个实体,关键字ENTITY必须大写。必须大写。% :表示声明的是一个参数实体。:表示声明的是一个参数实体。Entity_Name :表示内部参数实体的名称。:表示内部参数实体的名称。Entity_Value :表示实体的内容。:表示实体的内容。在在DTD中引用内部参数实体的语法:中引用内部参数实体的语法:%Entity_Name;Page 443.5.5 外部参数实体外部参数实体一个独立的一个独立的DTD文档可以被定义为一个外部参数实体,文档可以被定义为一个外部参数实体,并可通过这个并可通过这个DTD文档的文档的URL对其进行引用。对其进行引用。声明外部参数实体的语法:声明外部参数

26、实体的语法:说明:说明:!ENTITY :表示开始声明一个实体,关键字:表示开始声明一个实体,关键字ENTITY必必须大写。须大写。% :表示定义的是参数实体。:表示定义的是参数实体。Entity_Name :表示实体的名称。:表示实体的名称。SYSTEM :是定义为外部实体的关键字。:是定义为外部实体的关键字。Entity_URL :外部实体文件的:外部实体文件的URL。在在DTD中引用外部参数实体的语法:中引用外部参数实体的语法:%Entity_Name;Page 453.6.1 XML Schema基本概念基本概念XML Schema又被称为又被称为XML模式或者模式或者XML架构,架构,用来定义和描述用来定义和描述XML文档的结构、内容和语义。文档的结构、内容和语义。XML Schema 就像一幅蓝图,声明了就像一幅蓝图,声明了XML文档文档中允许的数据和结构,具体规定了中允许的数据和结构,具体规定了XML 文档中文档中可以包含哪些元素,这些元素又可以具有哪些子可以包含哪些元素,这些元素又可以具有哪些子元素,并可规定这些子元素出现的顺序及其次数元素,并可规定这些子元素出现的顺序及其次数等。另外,等。另外,XML Schema 还具体规定了还具体规定了XML文文档中每个元素和属性的数据类型。档中每个元素和属性的数据类型。P

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论