《项目3_使用DTD规范XML文档(简单介绍Schema).ppt》由会员分享,可在线阅读,更多相关《项目3_使用DTD规范XML文档(简单介绍Schema).ppt(94页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、第第3 3章章 使用使用DTDDTD规范规范XMLXML文档文档DTDDTD基本概念基本概念3.1DTDDTD对元素的声明对元素的声明3.2 DTDDTD对属性的声明对属性的声明3.3 DTDDTD的引用的引用3.4 XML SchemaXML Schema简介简介3.6 实体的声明与引用实体的声明与引用3.53.1 DTD3.1 DTD基本概念基本概念3.1.1DTD简介简介对对XML文档所作的规范和约定被称为文档所作的规范和约定被称为DTD,也就是,也就是文档类型定义文档类型定义。可以把可以把DTD看作是编写某类看作是编写某类XML文档的一个模板。文档的一个模板。3.1.1DTD简介简介D
2、TD用来描述用来描述XML文档的结构,一个文档的结构,一个DTD文文档包含:档包含:-元素元素(ELEMENT)(ELEMENT)的定义规则的定义规则-元素之间的关系规则元素之间的关系规则-属性属性(ATTLIST)(ATTLIST)的定义规则的定义规则-可使用的实体可使用的实体(ENTITY)(ENTITY)或符号或符号(NOTATION)(NOTATION)规则规则DTD以简单文本文件的形式出现,可以存储以简单文本文件的形式出现,可以存储在独立的文件中在独立的文件中(外部外部外部外部DTDDTD),也可以嵌入,也可以嵌入XML文件文件(内部内部内部内部DTD)DTD)。DTDDTD的作用的
3、作用可以验证可以验证XML文档数据的有效性。文档数据的有效性。可以为某类可以为某类XML文档提供统一的格式和相同的文档提供统一的格式和相同的结构。结构。可以保证在一定范围内,可以保证在一定范围内,XML文档数据的交流文档数据的交流和共享。和共享。应用程序设计人员根据应用程序设计人员根据DTD就能够知道对应就能够知道对应XML文档的逻辑结构,从而编写出相应的处理文档的逻辑结构,从而编写出相应的处理应用程序。应用程序。3.1.2DTD的基本结构的基本结构 一份一份DTD实际上是若干条有关元素、属性、实际上是若干条有关元素、属性、实体等定义和声明语句的集合。实体等定义和声明语句的集合。在在DTD中可
4、以包含下列各种声明语句:中可以包含下列各种声明语句:DTD声明开始语句声明开始语句元素类型声明语句元素类型声明语句属性列表声明语句属性列表声明语句实体声明语句实体声明语句注释语句注释语句!DOCTYPE影片目录影片目录DTDDTD声明开始语句声明开始语句根元素根元素元素类型声明语句元素类型声明语句属性列表声明语句属性列表声明语句实体声明语句实体声明语句范例:范例:DTDDemo_01.xml是一个包含内部是一个包含内部DTD声明的声明的完整完整XML文档。文档。回顾回顾13.2 DTD3.2 DTD对元素的声明对元素的声明在有效的在有效的XML文档中所使用的元素,都必须在文档中所使用的元素,都
5、必须在相应的相应的DTD中明确地加以声明,包括声明元素的名中明确地加以声明,包括声明元素的名称、元素内容的数据类型、该元素允许具有的子元称、元素内容的数据类型、该元素允许具有的子元素及子元素出现的顺序等。素及子元素出现的顺序等。可以说,在可以说,在DTD中对中对XML元素的声明决定了整元素的声明决定了整个有效个有效XML文档的逻辑结构。文档的逻辑结构。3.2.1元素声明的语法元素声明的语法语法:语法:说明:说明:p!ELEMENT:元素声明语句的开始,关键字元素声明语句的开始,关键字ELEMENT必须大写。必须大写。pelement_name:所声明的元素名称。所声明的元素名称。pelemen
6、t_definition:对该元素内容的定义,用来规定:对该元素内容的定义,用来规定该元素可以包含的内容。该元素可以包含的内容。注意:在一个注意:在一个DTD中对同名的元素只能声明一次!中对同名的元素只能声明一次!3.2.1元素声明的语法元素声明的语法例:例:范例:一个包含内部范例:一个包含内部DTD的文档的文档DTDDemo_02.xml3.2.2各种元素的声明各种元素的声明1 1基本字符元素的声明基本字符元素的声明2 2含子元素的严格声明含子元素的严格声明3 3包含任意内容的声明包含任意内容的声明4 4子元素出现次数的声明子元素出现次数的声明5 5选择性子元素的声明选择性子元素的声明6 6
7、空元素的声明空元素的声明7 7混合型元素的声明混合型元素的声明8 8实体的声明实体的声明1基本字符元素的声明基本字符元素的声明XML文档中的基本字符元素,是指那些仅含文档中的基本字符元素,是指那些仅含有字符数据,而不含有任何子元素的元素。有字符数据,而不含有任何子元素的元素。格式:格式:可解析的字符数据可解析的字符数据例:例:对应的对应的XML元素:元素:元素的数据内容元素的数据内容2含子元素的严格声明含子元素的严格声明子元素声明的格式:子元素声明的格式:注意:注意:经上述声明的元素不能直接包含字符元素,经上述声明的元素不能直接包含字符元素,而只能包含所指定的这几个子元素,并且这些子元而只能包
8、含所指定的这几个子元素,并且这些子元素在素在XML文档中必须以上面的文档中必须以上面的排列顺序排列顺序依次出现,依次出现,每个子元素都每个子元素都必须出现一次必须出现一次。P54例例3包含任意内容的声明包含任意内容的声明ANY内容声明表示该元素可以包含任意内容,内容声明表示该元素可以包含任意内容,如可解析的文本数据、空元素、子元素等。如可解析的文本数据、空元素、子元素等。格式格式:*ANY是一种更不严格的元素声明方式,它严重是一种更不严格的元素声明方式,它严重违背了违背了DTD的设计初衷,因此向各位读者建议尽的设计初衷,因此向各位读者建议尽量避免使用这种声明方式。量避免使用这种声明方式。4子元
9、素出现次数的声明子元素出现次数的声明符号符号允许元素出现的次数允许元素出现的次数无符号无符号只能出现一次只能出现一次?不出现或只能出现一次不出现或只能出现一次*不出现或可出现多次(任意次)不出现或可出现多次(任意次)+出现一次或多次(一次以上)出现一次或多次(一次以上)表表 3-1 控制子元素出现次数的特定符号控制子元素出现次数的特定符号例:例:返回返回选择性子元素指一个父元素必须在多个指定的子选择性子元素指一个父元素必须在多个指定的子元素中选择其中的元素中选择其中的一个一个,格式如下:,格式如下:P55例例 /5选择性子元素的声明选择性子元素的声明6空元素的声明空元素的声明格式格式:例:例:
10、声明声明引用引用或或混合型元素内容的声明,就是指元素的内容中可以出混合型元素内容的声明,就是指元素的内容中可以出现可可解析的文本数据,也可以出解析的文本数据,也可以出现子元素。其格式如下:子元素。其格式如下:表表示示既既允允许包包含含字字符符数数据据,又又允允许以以任任意意顺序序包包含含指指定的一个或多个子元素,也允定的一个或多个子元素,也允许不包含任何元素内容。不包含任何元素内容。P56例例7混合型元素的声明混合型元素的声明元素内容声明元素内容声明含义含义#PCDATA表示元素内部只能是可解析的文本数据表示元素内部只能是可解析的文本数据EMPTY表示元素为空元素,但是元素中可以包含属表示元素
11、为空元素,但是元素中可以包含属性性ANY表示元素的内容为任意的内容,可以是空元表示元素的内容为任意的内容,可以是空元素、可解析文本数据、子元素、混合型元素素、可解析文本数据、子元素、混合型元素中的任意一种中的任意一种子元素子元素表示元素的内容只能是指定顺序和出现次数表示元素的内容只能是指定顺序和出现次数的子元素的子元素混合型内容混合型内容表示元素的内部可以是可解析的文本数据,表示元素的内部可以是可解析的文本数据,也可以是子元素,甚至是两者的结合也可以是子元素,甚至是两者的结合回顾回顾28实体的声明实体的声明实体即有一定内容的一个常量,其格式如下:实体即有一定内容的一个常量,其格式如下:例:例:
12、声明声明引用引用均表示元素均表示元素“作者作者”是字符型元是字符型元素素3.2.3元素声明综合示例元素声明综合示例1灵活控制元素出现次数灵活控制元素出现次数 文档中特定元素出现的次数文档中特定元素出现的次数 整个子元素内容出现的次数整个子元素内容出现的次数P57例例2元素的分组与嵌套元素的分组与嵌套将子元素用括号括起来作为一个元素组处理。将子元素用括号括起来作为一个元素组处理。P58两个例子两个例子3.3 DTD3.3 DTD对属性的声明对属性的声明任务:任务:设定某个元素所具有的各个属性及其名称设定某个元素所具有的各个属性及其名称设定每个属性的数据类型设定每个属性的数据类型设定该属性是必须有
13、的还是可选的,是否具设定该属性是必须有的还是可选的,是否具有固定的属性值,或者设定该属性值省略时有固定的属性值,或者设定该属性值省略时的默认值的默认值 属性名称和属性值包含在元素的属性名称和属性值包含在元素的属性名称和属性值包含在元素的属性名称和属性值包含在元素的起始标记起始标记起始标记起始标记中。中。中。中。3.3 DTD3.3 DTD对属性的声明对属性的声明3.3.1属性声明的语法属性声明的语法语法:语法:3.3.1属性声明的语法属性声明的语法说明说明1:p!ATTLIST:表示属性定义语句的开始,:表示属性定义语句的开始,ATTLIST是关键字,必须大写。是关键字,必须大写。pEleme
14、nt_Name:元素名,用来指定对该元素的属性:元素名,用来指定对该元素的属性进行声明。进行声明。pAttribute_Name:该元素具有的某个属性名,属性的:该元素具有的某个属性名,属性的命名规则与元素的命名规则是一致的。命名规则与元素的命名规则是一致的。pType:属性的数据类型。:属性的数据类型。padded_declare:属性的附加声明,是一个可选项。:属性的附加声明,是一个可选项。说明说明2一个元素可以定义多个属性。一个元素可以定义多个属性。在一行中定义在一行中定义在多行中定义在多行中定义3.3.2属性的附加声明属性的附加声明元素内容说明元素内容说明含义含义只有默认值只有默认值如
15、果元素中不包含该属性,解析器将缺省值作为如果元素中不包含该属性,解析器将缺省值作为属性值。否则,该属性可以有其他值属性值。否则,该属性可以有其他值#REQUIRED 元素的每个实例都必须包含该属性元素的每个实例都必须包含该属性#IMPLIED元素的每个实例可以选择是否包含该属性元素的每个实例可以选择是否包含该属性#FIXED元素的属性取值不能更改,只能为设定好的默认元素的属性取值不能更改,只能为设定好的默认值,如果元素的实例中不包含该属性,系统将自值,如果元素的实例中不包含该属性,系统将自动将该默认值作为元素的属性值动将该默认值作为元素的属性值3.3.2属性的附加声明属性的附加声明1#REQU
16、IRED表示在相应的表示在相应的XML文档中该元素的这个属性是必须的,文档中该元素的这个属性是必须的,并必须给出一个属性值。并必须给出一个属性值。例:例:2#IMPLIED表示在表示在XML文档中该元素的这个属性是可有可无的。文档中该元素的这个属性是可有可无的。例:例:手机手机手机手机3.3.2属性的附加声明属性的附加声明3#FIXEDAttValue表示在表示在XML文档中该元素的这个属性值是所给定的固定文档中该元素的这个属性值是所给定的固定值,不能更改。值,不能更改。例:例:4Default_Value在属性的附加声明中如果直接给定一个用引号括起来的在属性的附加声明中如果直接给定一个用引号
17、括起来的字符串,表示预设的默认属性值。字符串,表示预设的默认属性值。例:例:固定的属性值固定的属性值手机手机手机手机手机手机默认值默认值3.3.3属性的各种类型属性的各种类型某个属性的类型(某个属性的类型(Type)规定了哪种类型)规定了哪种类型的数据可以作为该属性的值。的数据可以作为该属性的值。XML规范允规范允许为元素的属性指定许为元素的属性指定10种不同的类型。种不同的类型。10种不同的属性类型种不同的属性类型类型名称类型名称含义含义CDATA普通的字符数据普通的字符数据ID文档中唯一的取值文档中唯一的取值IDREF文档中某个元素文档中某个元素ID属性值属性值IDREFS文档中若干个元素
18、的文档中若干个元素的ID属性值属性值ENTITY在在DTD中声明的实体中声明的实体ENTITIES在在DTD中声明的若干实体中声明的若干实体NMTOKEN任意不含空格的任意不含空格的XML名称名称NMTOKENS多个多个XML名称名称NOTATION在在DTD中声明的记号名中声明的记号名Enumerated枚举型数据枚举型数据3.3.3属性的各种类型属性的各种类型1CDATA类型类型不包含不包含、”的任意字符串的任意字符串(注:元素内容为字符串(注:元素内容为字符串#PCDATA)2ID类型类型每一个属性值必须是唯一的每一个属性值必须是唯一的P63例例3.3.3属性的各种类型属性的各种类型3I
19、DREF类型类型引用文档中某个元素引用文档中某个元素ID属性值属性值P64例例4IDREFS类型类型引用文档中若干个元素的引用文档中若干个元素的ID属性值属性值P65例例多个多个ID属性值之间要用空格分开,并放在一对引号之中。属性值之间要用空格分开,并放在一对引号之中。举例举例3.3.3属性的各种类型属性的各种类型5ENTITY类型类型实体类型属性通常为外部二进制数据文件名或不可解实体类型属性通常为外部二进制数据文件名或不可解析的实体(如析的实体(如GIF、JPEG、MPEG、MP3、AVI等等)名称。)名称。例:在例:在DTDDTD中经常会声明一个名为中经常会声明一个名为IMAGEIMAGE
20、或或PICTUREPICTURE的元素,用来的元素,用来在在XMLXML文档中包含一个图形数据,该元素一般需要一个名为文档中包含一个图形数据,该元素一般需要一个名为SourceSource的的ENTITYENTITY类型属性来指定图形数据的来源。类型属性来指定图形数据的来源。引用引用3.3.3属性的各种类型属性的各种类型6ENTITIES类型类型ENTITIES类型属性的属性值可以包含数个以空格分类型属性的属性值可以包含数个以空格分开的未解析实体名称,并使用一对引号将它们括起来。开的未解析实体名称,并使用一对引号将它们括起来。引用引用空格3.3.3属性的各种类型属性的各种类型7NMTOKEN类
21、型类型NMTOKEN类型属性的属性值实际上是一个有效的类型属性的属性值实际上是一个有效的XML数据的名称代号,是一个由若干个字母、数字、小圆数据的名称代号,是一个由若干个字母、数字、小圆点、连字号或下划线组成的点、连字号或下划线组成的名称字符串名称字符串。l字符串中不得包含空格;字符串中不得包含空格;l字符串中允许出现冒号,但不能出现在第一个字符位置;字符串中允许出现冒号,但不能出现在第一个字符位置;l字符串允许由数字字符开头。字符串允许由数字字符开头。范例:范例:王大可王大可判断下列判断下列DTD文档的对错文档的对错!DOCTYPEpoems八阵图八阵图功盖三分国功盖三分国,名成八阵图名成八
22、阵图,江流石不转江流石不转,遗恨失吞吴遗恨失吞吴.!DOCTYPEpoems八阵图八阵图功盖三分国功盖三分国,名成八阵图名成八阵图,江流石不转江流石不转,遗恨失吞吴遗恨失吞吴.判断下列判断下列DTD文档的对错文档的对错!DOCTYPEpoems八阵图八阵图功盖三分国功盖三分国,名成八阵图名成八阵图,江流石不转江流石不转,遗恨失吞吴遗恨失吞吴.NMTOKEN类型类型lNMTOKEN与与CDATA的关系?的关系?NMTOKEN是是CDATA的一个子集,其限制比的一个子集,其限制比CDATA类型多,它不能包括空格、回车符、换行符、类型多,它不能包括空格、回车符、换行符、制表符等符号。制表符等符号。3
23、.3.3属性的各种类型属性的各种类型8NMTOKENS类型类型NMTOKENS类型属性的属性值可以包含数个以类型属性的属性值可以包含数个以空格空格隔隔开的名称代号,并使用一对引号将它们括起来。开的名称代号,并使用一对引号将它们括起来。引用引用王大可王大可判断下列判断下列DTD文档的对错文档的对错!DOCTYPEpoems八阵图八阵图功盖三分国功盖三分国,名成八阵图名成八阵图,江流石不转江流石不转,遗恨失吞吴遗恨失吞吴.3.3.3属性的各种类型属性的各种类型9NOTATION类型类型(标注类型标注类型)现实世界中存在很多无法或不易用现实世界中存在很多无法或不易用XML格格式组织的数据,如图像、语
24、音、影像等。对于式组织的数据,如图像、语音、影像等。对于这些数据,这些数据,XML应用程序常常并不提供直接的应用程序常常并不提供直接的应用支持。应用支持。NOTATION类型类型(标注类型标注类型)NOTATION类型属性的属性值注明了能对不可类型属性的属性值注明了能对不可解析实体处理的应用软件。解析实体处理的应用软件。注意:注意:在在DTD中声明一个中声明一个NOTATION类型的属性时,必类型的属性时,必须首先声明一个具体的须首先声明一个具体的NOTATION,用来指向应用软件,用来指向应用软件所在的位置。所在的位置。(P66范例:范例:DTDDemo_03.xml)声明一个标注:声明一个
25、标注:声明一个属性为标注类型:声明一个属性为标注类型:引用:引用:3.3.3属性的各种类型属性的各种类型10Enumerated类型类型枚举类型属性必须从一组给定的值中选择一个作为枚举类型属性必须从一组给定的值中选择一个作为其属性值。定义这种类型的属性时不需要专门的关键字。其属性值。定义这种类型的属性时不需要专门的关键字。可选值可选值默认值默认值10种不同的属性类型种不同的属性类型类型名称类型名称含义含义CDATA普通的字符数据普通的字符数据ID文档中唯一的取值文档中唯一的取值IDREF文档中某个元素文档中某个元素ID属性值属性值IDREFS文档中若干个元素的文档中若干个元素的ID属性值属性值
26、ENTITY在在DTD中声明的实体中声明的实体ENTITIES在在DTD中声明的若干实体中声明的若干实体NMTOKEN任意不含空格的任意不含空格的XML名称名称NMTOKENS多个多个XML名称名称NOTATION在在DTD中声明的记号名中声明的记号名Enumerated枚举型数据枚举型数据练一练:练一练:A.A.手机手机/B.B.手机手机/C.C.手机手机/n若声明若声明,则有效的则有效的“影片影片”元素是:元素是:;n若声明若声明,则有效的则有效的“影片影片”元素是:元素是:;n若声明若声明,则有效的,则有效的“影片影片”元素是:元素是:;n若声明若声明,则有效的则有效的“影片影片”元素是
27、:元素是:。3.4 DTD3.4 DTD的引用的引用3.4.1引用内部引用内部DTD语法:语法:p!DOCTYPE:表示表示DTD声明的开始,关键字声明的开始,关键字DOCTYPE必须大写。必须大写。p根元素名称:指定根元素名称:指定XML文档的根元素名称,文档的根元素名称,这个根元素这个根元素名称必须精确地与文档中实际的根元素名称一致名称必须精确地与文档中实际的根元素名称一致。pDTD声明语句序列:包含在一对方括号(声明语句序列:包含在一对方括号()之内的若)之内的若干条语句,用来对干条语句,用来对XML文档中所使用的元素、属性和实体文档中所使用的元素、属性和实体等进行具体声明。等进行具体声
28、明。3.4.1引用内部引用内部DTD注意:在注意:在XML文档中引用内部文档中引用内部DTD时,应时,应该在文档开头的该在文档开头的XML声明语句中添加声明语句中添加standalone=“yes”的说明。的说明。范例:范例:DTDDemo_04.xml3.4.2引用外部引用外部DTD1外部外部DTD的创建的创建外部外部DTD是一个独立于是一个独立于XML文档的文件,使文档的文件,使用用.dtd为其文件扩展名。此种文件实际上也为其文件扩展名。此种文件实际上也是一个文本文件,可用任何文本编辑器创建。是一个文本文件,可用任何文本编辑器创建。在外部在外部DTD中,除了没有内部中,除了没有内部DTD中
29、的中的“!DOCTYPE根元素名称根元素名称”语句之外,其他声明语句之外,其他声明语句都是一样的。语句都是一样的。P69例例2外部外部DTD的引用的引用根据外部根据外部DTD性质的不同,又可将其分为性质的不同,又可将其分为私私有有DTD文件文件和和公共公共DTD文件文件。u私有私有DTD文件是指并未公开的文件是指并未公开的DTD文件,通文件,通常属于某个组织内部或个人所有。常属于某个组织内部或个人所有。u公共公共DTD文件则是为某一应用领域或行业所制文件则是为某一应用领域或行业所制定,被国际上的标准组织或行业组织广泛认可的、定,被国际上的标准组织或行业组织广泛认可的、公开的、标准的公开的、标准
30、的DTD文件。文件。3.4.2引用外部引用外部DTD引用私有引用私有DTD文件的语法格式为:文件的语法格式为:存放路径存放路径(绝对或者相对路径绝对或者相对路径)引用公共引用公共DTD文件的语法格式为:文件的语法格式为:逻辑名称逻辑名称 存放路径存放路径3.4.2引用外部引用外部DTD注意:在注意:在XML文档中引用外部文档中引用外部DTD时,时,应该在开头的应该在开头的XML声明语句中添加声明语句中添加standalone=“no”说明。说明。范例:范例:DTDDemo_05.xml(P70)相对路径相对路径DTD DTD 范例范例1 1DTD内部外部在 XML 文档的 XML 声明后直接写
31、入存在于文档内容之外 范例演示!DOCTYPE movies.内部文档类型定义DTD DTD 范例范例 2 2范例演示 空中监狱 尼古拉斯 凯奇 家长指引 幽灵 黛米 摩尔 帕特里克 斯韦兹 家长指引外部文档类型定义外部 DTD 文件3.4.3混合引用混合引用DTD混合引用混合引用DTD是指:是指:在一个带有内部在一个带有内部DTD的的XML文档中,再引用文档中,再引用一个或多个外部一个或多个外部DTD来共同规范文档中的内容。来共同规范文档中的内容。范例:范例:DTDDemo_06.xml可以改为一个内部可以改为一个内部DTD吗?吗?DTDDemo_06_1.xml可以改为外部参数实体吗?可以
32、改为外部参数实体吗?DTDDemo_06_2.xml3.5 3.5 实体的声明与引用实体的声明与引用3.5.1实体的概念与分类实体的概念与分类1实体的概念实体的概念实体(实体(Entity)是一个预先定义的数据或数)是一个预先定义的数据或数据集合。通过实体可以方便地被引用到任何需要据集合。通过实体可以方便地被引用到任何需要这些数据的地方。另外,通过实体也可以将非这些数据的地方。另外,通过实体也可以将非XML数据(比如可以将图形和影像等二进制数据)数据(比如可以将图形和影像等二进制数据)引进到引进到XML文档中。文档中。2实体的分类实体的分类一般实体:一般实体:用来替代文档具体内容的实体。用来替
33、代文档具体内容的实体。参数实体:参数实体:专门用在专门用在DTD中中的实体,不能在的实体,不能在XML文档文档中引用。中引用。内部实体:内部实体:所定义的实体内容并不涉及外部文档。所定义的实体内容并不涉及外部文档。外部实体:外部实体:所定义的实体内容为外部独立存在的文件。所定义的实体内容为外部独立存在的文件。可解析实体:可解析实体:包含字符、数字、文本块或标记的实体。包含字符、数字、文本块或标记的实体。不可解析实体:不可解析实体:包含图片、声音等其他二进制数据的实体。包含图片、声音等其他二进制数据的实体。四种较常用的实体四种较常用的实体 内部一般实体内部一般实体 外部一般实体外部一般实体 内部
34、参数实体内部参数实体 外部参数实体外部参数实体3.5.2内部一般实体内部一般实体内部一般实体是指在内部一般实体是指在DTD中定义的一段具体中定义的一段具体文字内容,通常在文字内容,通常在XML文档的元素中引用,也可文档的元素中引用,也可在在DTD语句中引用。语句中引用。语法:语法:p!ENTITY:表示开始声明一个实体,关键字:表示开始声明一个实体,关键字ENTITY必须大写。必须大写。pEntity_Name:表示实体的名称。:表示实体的名称。pEntity_Value:表示实体的具体内容。:表示实体的具体内容。引用内部一般实体引用内部一般实体l在在XML文档或者文档或者DTD中引用内部一般
35、实体:中引用内部一般实体:&Entity_Name;范例:范例:comEntity.xmll l 实体内容还可以包含标记或多行文档内容,当包实体内容还可以包含标记或多行文档内容,当包实体内容还可以包含标记或多行文档内容,当包实体内容还可以包含标记或多行文档内容,当包含多行时,必须用含多行时,必须用含多行时,必须用含多行时,必须用“”“”“”“”把这些内容括起来,另外实把这些内容括起来,另外实把这些内容括起来,另外实把这些内容括起来,另外实体内容必须体内容必须体内容必须体内容必须有效,否则应用该实体的有效,否则应用该实体的有效,否则应用该实体的有效,否则应用该实体的XMLXML文档不能文档不能文
36、档不能文档不能称为有效的称为有效的称为有效的称为有效的XMLXML文档。文档。文档。文档。范例:范例:Entity_01.xml3.5.3外部一般实体外部一般实体外部实体所对应的内容通常为外部实体所对应的内容通常为一个独立存一个独立存在的文件在的文件,在,在DTD中定义某个外部实体时需中定义某个外部实体时需要指定该实体所对应文件的要指定该实体所对应文件的URL。在在DTD中定义外部一般实体的语法:中定义外部一般实体的语法:外部实体的关键字外部实体的关键字3.5.3外部一般实体外部一般实体说明:说明:p!ENTITY:表示开始声明一个实体,关键字:表示开始声明一个实体,关键字ENTITY必须大写
37、。必须大写。pEntity_Name:表示外部实体的名称。:表示外部实体的名称。pSYSTEM:是定义为外部实体的关键字。:是定义为外部实体的关键字。pEntity_URL:该实体所对应文件的:该实体所对应文件的URL。在在XML文档中引用外部一般实体的语法:文档中引用外部一般实体的语法:&Entity_Name;范例:范例:Entity_02.xml3.5.4内部参数实体内部参数实体参数实体参数实体-是专门用在是专门用在DTD中的一种实体,中的一种实体,参数实体在参数实体在DTD中定义和引用。使用参数实体不中定义和引用。使用参数实体不仅方便仅方便DTD的编写,也有利于的编写,也有利于DTD文
38、件的维护。文件的维护。内部参数实体内部参数实体-是指在是指在DTD中定义的一段具中定义的一段具体内容,并只能在该体内容,并只能在该DTD的其他声明语句中引用的其他声明语句中引用的已解析实体。的已解析实体。声明内部参数实体的语法:声明内部参数实体的语法:说明:说明:p!ENTITY:表示开始声明一个实体,关键字:表示开始声明一个实体,关键字ENTITY必须必须大写。大写。p%:表示声明的是一个参数实体。:表示声明的是一个参数实体。pEntity_Name:表示内部参数实体的名称。:表示内部参数实体的名称。pEntity_Value:表示实体的内容。:表示实体的内容。在在DTD中引用内部参数实体的
39、语法:中引用内部参数实体的语法:%Entity_Name;P77范例:范例:Entity_03.xml有空格有空格无空格无空格3.5.5外部参数实体外部参数实体外部参数实体外部参数实体允许将较小规模的允许将较小规模的DTD组合来创建较大规模的组合来创建较大规模的DTD。即将。即将一个独立的一个独立的DTD文档定义为一个外部参数实体,并通过这个文档定义为一个外部参数实体,并通过这个DTD文档的文档的URL对其进行引用。对其进行引用。声明外部参数实体的语法:声明外部参数实体的语法:3.5.5外部参数实体外部参数实体说明:说明:p!ENTITY:表示开始声明一个实体,关键字:表示开始声明一个实体,关
40、键字ENTITY必须大写。必须大写。p%:表示定义的是参数实体。:表示定义的是参数实体。pEntity_Name:表示实体的名称。:表示实体的名称。pSYSTEM:是定义为外部实体的关键字。:是定义为外部实体的关键字。pEntity_URL:外部实体文件的:外部实体文件的URL。在在DTD中引用外部参数实体的语法:中引用外部参数实体的语法:%Entity_Name;P79范例:范例:Entity_04.xml小结小结内部一般实体内部一般实体:声明:声明:引用:引用:&Entity_Name;外部一般实体外部一般实体:声明:声明:引用:引用:&Entity_Name;内部参数实体内部参数实体:声
41、明:声明:引用:引用:%Entity_Name;外部参数实体外部参数实体;声明:声明:引用:引用:%Entity_Name;3.6 XML Schema3.6 XML Schema简介简介XMLSchema又被称为又被称为XML模式或模式或XML架构。它是继架构。它是继DTD后,用来规范和描述后,用来规范和描述XML文档的第二代标准。文档的第二代标准。XMLSchema可用来详可用来详细规定细规定XML文档的数据模式及组织结构。文档的数据模式及组织结构。l 声明了声明了XML文档中允许的数据和结构文档中允许的数据和结构l规定了规定了XML文档中可以包含哪些元素,这些元素又可以文档中可以包含哪些
42、元素,这些元素又可以具有哪些子元素以及这些子元素出现的顺序及其次数等具有哪些子元素以及这些子元素出现的顺序及其次数等l规定了规定了XML文档中每个元素和属性的数据类型文档中每个元素和属性的数据类型3.6.1XMLSchema基本概念基本概念XMLSchema(XML模式或者模式或者XML架构)的两架构)的两大类型大类型:Microsoft XML SchemaW3C XML SchemaXML模式定义语言模式定义语言(XMLSchema Definition Language)3.6.1XMLSchema基本概念基本概念u与与DTD相比,相比,XMLSchema具有下面几具有下面几个明显的优势
43、:个明显的优势:XML Schema使用使用XML语法。语法。XML Schema支持名称空间。支持名称空间。XML Schema支持多种数据类型。支持多种数据类型。XML Schema具有更为强大和灵活的定义能力。具有更为强大和灵活的定义能力。范例范例1 1:根元素Schema的名称空间 声明元素 声明属性自定义复杂元素类型一些内置原子类型3.6.2XMLSchema数据类型数据类型1内置原子型数据类型内置原子型数据类型2自定义简单数据类型自定义简单数据类型3自定义复杂数据类型自定义复杂数据类型原子型数据类型原子型数据类型数据类型描述String表示字符串表示字符串类型型Number表示数字
44、表示数字类型型Int表示范表示范围在在-21474836482147483647之之间的整数的整数NonNegativeInteger表示大于或等于零的整数表示大于或等于零的整数PositiveInteger表示大于零的整数表示大于零的整数Float表示表示单精度精度32位的浮点数位的浮点数Boolean表示布表示布尔类型,型,0或或1Date表示日期表示日期类型,格式型,格式为YYYY-MM-DDTime表示表示时间类型,格式型,格式为HH:MM:SSTimeDuration表示一段持表示一段持续时间Uri表示通用表示通用资源源标识符(符(URI)简单数据类型(简单数据类型(SimpleTy
45、peSimpleType)简单数据类型用于声明只包含数据内容的元素。简单数据类型用于声明只包含数据内容的元素。不包含子元素、不包含属性;不包含子元素、不包含属性;只能是数字、字符串或文本数据。只能是数字、字符串或文本数据。简单数据类型(简单数据类型(SimpleTypeSimpleType)语法格式:语法格式:lname属性:自定义的简单数据类型的名称,必须是一个属性:自定义的简单数据类型的名称,必须是一个有效的有效的XML名称;名称;lrestriction子元素:对数据类型添加限制;子元素:对数据类型添加限制;llist子元素:定义列表数据类型;子元素:定义列表数据类型;lunion子元素
46、:定义联合数据类型。子元素:定义联合数据类型。restriction自定义简单数据类型自定义简单数据类型l 语法格式:语法格式:一个或多个元素指定新数据类型的限制一个或多个元素指定新数据类型的限制可以是基本数据类型,也可以是基本数据类型,也可以是自定义的数据类型。可以是自定义的数据类型。定义数据类型的约束面定义数据类型的约束面约约束束说说明明enumeration定定义义了一系列的有效了一系列的有效值值fractionDigits指定了允指定了允许许出出现现的小数位数的最大位数。的小数位数的最大位数。值值必必须须大于等于大于等于0maxExclusive指定了数指定了数值值上限(数上限(数值值
47、必必须须该值该值)maxInclusive指定了数指定了数值值上限(数上限(数值值必必须须该值该值)minExclusive指定了数指定了数值值的下限的下限(数(数值值必必须须该值该值)minInclusive指定了数指定了数值值的下限(数的下限(数值值必必须须该值该值)length指定了允指定了允许许出出现现的字符或列表的字符或列表项项的个数。的个数。值值必必须须大于等于大于等于0minLength指定了允指定了允许许出出现现的字符或列表的最小个数。的字符或列表的最小个数。值值必必须须大于等于大于等于0maxLength指定了允指定了允许许出出现现的字符或列表的字符或列表项项的最大个数。的最
48、大个数。值值必必须须大于等于大于等于0whiteSpace指定了空白符的指定了空白符的处处理方式(包括:理方式(包括:换换行符、制表符、空格符和回行符、制表符、空格符和回车车符)符)/在无符号整型的基础上扩建的一个简单数据类型的在无符号整型的基础上扩建的一个简单数据类型的Schema文档。文档。/声明元素声明元素/声明简单类型声明简单类型实例:实例:123456例例1:给员工分配:给员工分配100000到到999999之间的员工编号。之间的员工编号。例例2:enumeration约束的使用约束的使用/声明元素声明元素/声明简单类型声明简单类型/声明基于字符类型的约束声明基于字符类型的约束/*/
49、*实例实例:sliver*声明自定义枚举型声明自定义枚举型,包含了三个选项包含了三个选项(gold(gold、sliversliver、copper)copper),只能在三个选项中出现其中一个。只能在三个选项中出现其中一个。复杂数据类型(复杂数据类型(ComplexType)复杂数据类型可以包含子元素和属性,也复杂数据类型可以包含子元素和属性,也可以包含字符数据内容。可以包含字符数据内容。内容模型定义内容模型定义复杂数据类型复杂数据类型lsequence-指定元素下的子元素必须严格按声指定元素下的子元素必须严格按声明指定的次序出现。明指定的次序出现。实例:实例:XML基础基础 高怡新高怡新
50、人民邮电出版社人民邮电出版社 HTML 王松平王松平 人民邮电出版社人民邮电出版社 maxOccurs=“unbounded”默认值为:默认值为:1复杂数据类型复杂数据类型lchoice-指定元素下的子元素只能出现其中之一。指定元素下的子元素只能出现其中之一。如果把如果把choice的的maxOccurs属性设置成属性设置成“unbounded”,会怎样?,会怎样?实例:实例:XML基础基础 相当于:元素名相当于:元素名(子元素子元素1|子元素子元素2|子元素子元素n)+子元素可以不按顺序反复出现子元素可以不按顺序反复出现lgroup-声明一个元素组,该元素组可供复杂数据类声明一个元素组,该元