经典介绍DTD和Schema及区别.ppt

上传人:豆**** 文档编号:60595695 上传时间:2022-11-17 格式:PPT 页数:51 大小:597.50KB
返回 下载 相关 举报
经典介绍DTD和Schema及区别.ppt_第1页
第1页 / 共51页
经典介绍DTD和Schema及区别.ppt_第2页
第2页 / 共51页
点击查看更多>>
资源描述

《经典介绍DTD和Schema及区别.ppt》由会员分享,可在线阅读,更多相关《经典介绍DTD和Schema及区别.ppt(51页珍藏版)》请在得力文库 - 分享文档赚钱的网站上搜索。

1、11/50经典介绍DTD和Schema及区别 Still waters run deep.流静水深流静水深,人静心深人静心深 Where there is life,there is hope。有生命必有希望。有生命必有希望22/50回顾回顾 u掌握掌握XML语法规则语法规则u了解了解XML技术体系技术体系u了解了解XML应用方向应用方向u问题问题什么是什么是XML,为什么要用为什么要用XMLXML的内容有哪些的内容有哪些顺序:从文档上面到下面顺序:从文档上面到下面什么叫有效的什么叫有效的XML33/50目标目标u理解文档类型定义(理解文档类型定义(DTD)u理解命名空间理解命名空间u理解理解

2、Schemau使用使用Schema和和DTD定义定义XML文档文档44/50概述概述u为什么要验证为什么要验证XMLu什么叫有效的什么叫有效的XML如果一个如果一个XML文档规定其文档类型和数据结构的文档规定其文档类型和数据结构的DTD或者或者Schema,并且与之关联,并且校验正确,则此文档是有效的并且与之关联,并且校验正确,则此文档是有效的u良好与有效关系良好与有效关系格式良好的格式良好的XML文档,不一定是有效的文档,不一定是有效的XML文档。文档。有效的有效的XML文档,则一定是格式良好的文档,则一定是格式良好的XML文档。文档。说明:在格式良好的基础上说明:在格式良好的基础上,再看是

3、否满足企业的特殊要求再看是否满足企业的特殊要求uXML验证技术验证技术DTDSchema55/50文档类型定义文档类型定义DTDDTD uDTD(DocumentTypeDefinition,文档类型定义),文档类型定义)是一套标记的语法规则,它定义了元素、子元素、属性是一套标记的语法规则,它定义了元素、子元素、属性及其取值,规定了用户在及其取值,规定了用户在DTD关联的关联的XML文档中可以使文档中可以使用什么标记、各个标记出现的顺序以及标记的层次关系,用什么标记、各个标记出现的顺序以及标记的层次关系,并定义了实体。并定义了实体。u对于一个对于一个DTD的定义,最关键的在于它内部的元素和属的

4、定义,最关键的在于它内部的元素和属性的定义。一个性的定义。一个DTD文档实际上就是元素定义的集合,文档实际上就是元素定义的集合,而元素可能包含属性,也可能不包含属性。而元素可能包含属性,也可能不包含属性。66/50使用使用DTDDTD定义定义XMLXML元素元素 要点:包含符号和数据类型两部分。要点:包含符号和数据类型两部分。符号符号类型描述示例?问号表示该对象可以出现,但只能出现一次(菜鸟?)*星号表示该对象允许出现任意多次,也可以是零次(爱好*)+加号表示该对象最少出现一次,可以出现多次(成员+)()括号用来给元素分组(古龙|金庸|梁羽生),(王朔|余杰),毛毛|竖条表明在列出的对象中选择

5、一个(男人|女人),逗号表示对象必须按指定的顺序出现(西瓜,苹果,香蕉)77/50元素内容的类型元素内容的类型内容解释#PCDATA表明该元素可以包含任何字符数据,但是不能在其中包含任何子元素。假设我们定义元素学员:则下面的实例是正确的:努力学习是好学员而下面的实例就是错误的:努力学习是好学员因为在其中包含了子元素。一般如果定义元素的CONTENT为#PCDATA,最好在其中只加入纯文本字符数据EMPTY如果一个元素的CONTENT被声明为EMPTY的话,表示该元素不能包含任何子元素和文本,仅可以使用属性。ANY表示该元素中可以包含任何在DTD中定义的元素内容其他类型最通常的情况是一个元素本身

6、是由其他元素的集合构成的88/50示例示例99/50使用使用DTDDTD定义定义XMLXML元素的属性元素的属性 u说明:说明:回顾定义表时字段的定义。回顾定义表时字段的定义。对比学习对比学习XML很重要。很重要。1010/50 属性类型及其含义属性类型及其含义 类型具体的含义说明CDATA这个类型表明该属性只能包含字符数据ID该属性的取值必须是唯一的,在一个文档内两个ID属性的值不能一样IDREF、IDREFS 这个属性的值实际上就像C+中的指针一样,它是一个指向文档中其他地方声明的ID值,所以,如果在具体的文档中该属性的取值和它所指向的ID值不匹配的话,就会返回错误。IDREFS和IDRE

7、F类似,但是可以具有由空格分隔的多个引用ENTITY、ENTITIESENTITY属性的值必须对应一个在DTD文档内声明的但还没有分析过的实体。ENTITIES属性和ENTITY类似,不同的是它可以包含多个实体,每一个实体之间可以用空格进行分隔。需要注意的是实体包括普通实体、外部实体、参数实体和外部参数实体。可以把实体理解为程序设计语言中的变量NMTOKE、NMTOKENSNMTOKEN是CDATA的一个子集,它所使用的字符必须是字母、数字、句点、破折号、下划线或冒号。NMTOKENS和NMTOKEN类似,不同之处在于它可以包含多个值,每个值之间用空格进行分隔NOTATION NOTATION

8、的值必须引用已在DTD文档其他地方声明过的某注解的名称 NOTATION(enumerated)该属性的值必须匹配NOTATION名称列表中的某个名称。比如,我们已经存在两个NOTATION,一个为beauty,一个为beast;我们可以定义一个属性类型为NOTATION(beauty|beast)Enumerated该属性几乎和C+中的枚举变量一样,我们事先定义好一些值,该属性的值必须匹配所列出的这些值。比如现在有值为美丽、温柔、纯洁、智慧,该属性的类型就可以表现为(美丽|温柔|纯洁|智慧),实际内容文档必须从这些值中取一个,值之间用“|”进行分隔 1111/50约束的四种形式约束的四种形式

9、 值含义#REQUIRED用来告诉XML解析程序,该元素的所有实例都必须有该属性的值,就像数据表中某一个字段为NOT NULL一样#IMPLIED表示如果该元素的实例中没有指定该元素的值的话,就忽略该属性,就像在数据表中某一个字段的值可以为NULL一样#FIXED value表示包含该属性的元素实例必须在指定列出的值中比如一个属性名称为学员:学员 CDATA#FIXED 张三“表示属性值只能取“张三”Defaultvalue为属性提供一个默认的值。比如一个属性名称为学员:学员CDATA 张三如果在该属性的实例中没有包含这个属性的话,解析器就认为该属性的值就是“张三”,如果在该属性的实例中包含了

10、这个属性并赋值了的话,就采用这个赋值1212/50示例示例1313/50 DTD DTD与与XMLXML文档关联形式文档关联形式 u一个一个DTD文件可以与多个文件可以与多个XML文档联系起来。这样,这些文档联系起来。这样,这些XML文文档就具有相同的档就具有相同的DTD模板,其元素、元素属性、元素排列顺序、元模板,其元素、元素属性、元素排列顺序、元素内容都必须符合素内容都必须符合DTD定义的格式。该定义的格式。该DTD文档可以根据用户的实文档可以根据用户的实际需求创建,以适应特定的应用业务领域。际需求创建,以适应特定的应用业务领域。u将将DTD与与XML文档关联的方式有三种:文档关联的方式有

11、三种:使用内部使用内部DTD使用外部使用外部DTD使用公共使用公共DTDuXML解析器将使用解析器将使用DTD来解析来解析XML文档。文档。XML文档应该通过指令文档应该通过指令告诉解析器到哪里去寻找告诉解析器到哪里去寻找DTD。uXML文档类型声明出现在文档类型声明出现在XML文档的序言部分,以字符串文档的序言部分,以字符串“!DOCTYPE”开始,然后是根元素的名字,最后会依据不同的开始,然后是根元素的名字,最后会依据不同的DTD使用方式而有所不同。使用方式而有所不同。u下面的语法是下面的语法是DTD在在XML文档中的声明方法:文档中的声明方法:1414/50使用内部使用内部DTDDTD

12、!DOCTYPE家庭家庭1515/50使用外部使用外部DTDDTD u如果某个如果某个DTD是共享的,即开放给多个是共享的,即开放给多个XML文档作为公文档作为公共文档,那么这些共文档,那么这些XML文档应该使用外部文档应该使用外部DTD。如果采。如果采用外部用外部DTD的话,就需要有两个文档,第一个文档就是的话,就需要有两个文档,第一个文档就是关于关于DTD的文档,第二个文档就是遵守的文档,第二个文档就是遵守DTD格式的内容格式的内容文档。实际上,我们可以建立无穷多个遵守该文档。实际上,我们可以建立无穷多个遵守该DTD格式格式的文档。的文档。u在在XML文档中关联外部文档中关联外部DTD的语

13、法格式为:的语法格式为:1616/50外部外部DTDDTD示例示例1717/50使用公共使用公共DTDDTD u有些组织(例如有些组织(例如W3C)和企业将其所定义的)和企业将其所定义的DTD公布出公布出来,供需要的开发人员使用和参考。使用这些来,供需要的开发人员使用和参考。使用这些DTD的的XML文档即使用了公共的文档即使用了公共的DTD模板。其语法格式为:模板。其语法格式为:uDTD名称与名称与XML名称有所不同,可以包含字母、数字、空格等。如名称有所不同,可以包含字母、数字、空格等。如果一个果一个DTD是一个是一个ISO标准,那么标准,那么DTD名称应该以字符串名称应该以字符串“ISO”

14、开始。如果一个非开始。如果一个非ISO组织同意该组织同意该DTD,那么其名称以,那么其名称以“+”开始。开始。如果没有标准化组织同意该如果没有标准化组织同意该DTD,那么其名称以,那么其名称以“-”开始。初始开始。初始化字符串后面是一个双斜杠化字符串后面是一个双斜杠“/”,接着是,接着是DTD所有者的名称,然所有者的名称,然后又是双斜杠后又是双斜杠“/”,接着是描述该,接着是描述该DTD的文字,最后还是一个双的文字,最后还是一个双斜杠斜杠“/”,跟着,跟着ISO639语言标识符。比如,我们在前面学习过语言标识符。比如,我们在前面学习过的定义过渡型的定义过渡型XHTML1.0的的DOCTYPE为

15、:为:1818/50使用使用DTDDTD定义定义XMLXML实体实体 u内部实体:内部实体:u外部实体外部实体&write;1919/50命名空间命名空间 u当我们建立当我们建立XML应用的时候,会为具体的行业应用创建应用的时候,会为具体的行业应用创建特定的特定的DTD,规定可用的元素。有时会出现下面的情况,规定可用的元素。有时会出现下面的情况-两个同名的元素在不同的地方可能会有不同的含义。两个同名的元素在不同的地方可能会有不同的含义。u命名空间(命名空间(Namespace)-对于每一套特定应用的对于每一套特定应用的DTD,给它一个独一无二的标志来代表,如果在,给它一个独一无二的标志来代表,

16、如果在XML文文件中使用件中使用DTD中定义的元素,需将中定义的元素,需将DTD的标志和元素名、的标志和元素名、属性连在一起使用,相当于指明了元素来自什么地方,属性连在一起使用,相当于指明了元素来自什么地方,这样就不会和其他同名元素混淆了这样就不会和其他同名元素混淆了u。在。在XML中,采用现成的、在全球范围唯一的中,采用现成的、在全球范围唯一的“域名域名”作为命名空间,即用作为命名空间,即用URL作为作为XML的命名空间。的命名空间。xmlns:前缀前缀=命名空间命名空间URI2020/50命名空间示例命名空间示例2121/50命名空间示例命名空间示例客户端网页编程客户端网页编程成都朗沃信息

17、技术有限公司成都朗沃信息技术有限公司肖继潮肖继潮机械工业出版社机械工业出版社2005年年50050JavaScript权威指南权威指南老外老外Apress20042222/50XML Schema XML Schema uXMLSchema是用一套预先规定的是用一套预先规定的XML元素和属性创元素和属性创建的,这些元素和属性定义了建的,这些元素和属性定义了XML文档的结构和内容模文档的结构和内容模式。式。XMLSchema规定规定XML文档实例的结构和每个元文档实例的结构和每个元素素/属性的数据类型。属性的数据类型。uSchema相对于相对于DTD的明显好处是,的明显好处是,XMLSchema

18、文档文档本身也是本身也是XML文档,而不是像文档,而不是像DTD一样使用自成一体的一样使用自成一体的语法。这就方便了用户和开发者,因为可以使用相同的语法。这就方便了用户和开发者,因为可以使用相同的工具来处理工具来处理XMLSchema和其他和其他XML信息,而不必专信息,而不必专门为门为Schema使用特殊工具。使用特殊工具。Schema简单易懂,懂得简单易懂,懂得XML语法规则的人都可以立刻理解它。语法规则的人都可以立刻理解它。Schema的概念的概念提出已久,但提出已久,但W3C的标准最近才出来,相应的应用支持的标准最近才出来,相应的应用支持尚未完善,但采用尚未完善,但采用Schema已成

19、为已成为XML发展的一个趋势。发展的一个趋势。2323/50SchemaSchema和和DTDDTD的区别的区别 uXML从从SGML中继承了中继承了DTD,并用它来定义内容的模型,验证和组织元素。,并用它来定义内容的模型,验证和组织元素。同时,它也有很多局限:同时,它也有很多局限:DTD不遵守不遵守XML语法;语法;DTD不可扩展;不可扩展;DTD不支持命名空间的应用;不支持命名空间的应用;DTD没有提供强大的数据类型支持,只能表示很简单的数据类型。没有提供强大的数据类型支持,只能表示很简单的数据类型。uSchema完全克服了这些弱点,使得基于完全克服了这些弱点,使得基于Web的应用系统交换

20、的应用系统交换XML数据更数据更为容易。下面是它所展现的一些新特性:为容易。下面是它所展现的一些新特性:Schema完全基于完全基于XML语法,不需要再学习特殊的语法;语法,不需要再学习特殊的语法;Schema能用处理能用处理XML文档的工具处理,而不需要特殊的工具;文档的工具处理,而不需要特殊的工具;Schema大大扩充了数据类型,支持大大扩充了数据类型,支持booleans、numbers、datesandtimes、URIs、integers、decimalnumbers和和realnumbers等;等;Schema支持原型,也就是元素的继承。如:我们定义了一个支持原型,也就是元素的继承

21、。如:我们定义了一个“联系人联系人”数据数据类型,然后可以根据它产生类型,然后可以根据它产生“朋友联系人朋友联系人”和和“客户联系客户联系”两种数据类型;两种数据类型;Schema支持属性组。我们一般声明一些公共属性,然后可以应用于所有的元支持属性组。我们一般声明一些公共属性,然后可以应用于所有的元素,属性组允许把元素、属性关系放于外部定义、组合;素,属性组允许把元素、属性关系放于外部定义、组合;开放性。原来的开放性。原来的DTD只能有一个只能有一个DTD应用于一个应用于一个XML文档,现在可以有多个文档,现在可以有多个Schema运用于一个运用于一个XML文档。文档。2424/50思考思考u

22、Schema更好更好,为什么还要学习为什么还要学习DTD?目前还有很多开源框架使用的是目前还有很多开源框架使用的是DTD简单简单,清晰。清晰。熟悉熟悉DTD,能够读懂能够读懂Schema报错信息报错信息如:如:验证验证ss01.xml.file:/e:/LOVODB/PPT2008/43/xml02/ss01.xml:8,13:Elementlastnameisnotvalidforcontentmodel:(firstname|lastname)XML文档文档ss01.xml无效无效(1errors)uSchema目前越来越多的框架由目前越来越多的框架由DTD验证改为了验证改为了Schema

23、验证验证Schemal已经成为一种发展趋势已经成为一种发展趋势2525/50XML SchemaXML Schema基础概念基础概念 1 1u预定义类型预定义类型u派生类型派生类型XML Schema中常用的预定义类型数据类型描述string表示字符串Boolean布尔型decimal代表特定精度的数字float表示单精度32位浮点数double表示双精度64位浮点数duration表示持续时间 dateTime代表特定的时间 time代表特定的时间,但是是每天重复的date代表日期 hexBinary代表十六进制数anyURI代表一个URI,用来定位文件NOTATION代表NOTATION类

24、型2626/50XML SchemaXML Schema基础概念基础概念2 2uSchema元素:简单类型和复杂类型元素:简单类型和复杂类型uXMLSchema规范中将元素分为两种类型:规范中将元素分为两种类型:简单类型元素简单类型元素:简单类型元素只能包含字符内容。这些字符可以简单类型元素只能包含字符内容。这些字符可以被约束为特殊的预定义类型或派生类型。例如,可以指定一个被约束为特殊的预定义类型或派生类型。例如,可以指定一个简单元素的内容必须是日期、整数、字符串或者仅仅是一个字简单元素的内容必须是日期、整数、字符串或者仅仅是一个字符或者一系列字符。符或者一系列字符。复杂类型元素复杂类型元素:

25、复杂类型元素是包含子元素内容或者属性的元素复杂类型元素是包含子元素内容或者属性的元素2727/50XML SchemaXML Schema文档基本结构文档基本结构 u一个简单的一个简单的XML文档文档note.xml尹老师尹老师肖老师肖老师提醒提醒本周末不要忘记提醒我参加回忆本周末不要忘记提醒我参加回忆2828/50XMLSchemaXMLSchema文档基本结构文档基本结构u在在W3CXMLschema规范中规定:所有的规范中规定:所有的Schema文文档都使用档都使用作为其根元素。因此,所有的作为其根元素。因此,所有的XMLschema文档都应该是如下的结构:文档都应该是如下的结构:u元素

26、可以包含一些属性。一个元素可以包含一些属性。一个XMLschema声明看起来经常以如下的形式出现:声明看起来经常以如下的形式出现:.2929/50XMLSchemaXMLSchema文档基本结构文档基本结构u在在W3CXMLschema规范中规定:所有的规范中规定:所有的Schema文文档都使用档都使用作为其根元素。因此,所有的作为其根元素。因此,所有的XMLschema文档都应该是如下的结构:文档都应该是如下的结构:.3030/50XMLSchemaXMLSchema文档基本结构文档基本结构u元素可以包含一些属性。一个元素可以包含一些属性。一个XMLschema声明看起来经常以如下的形式出现

27、:声明看起来经常以如下的形式出现:.schema中用到的元素和数据类型(中用到的元素和数据类型(schema、element、complexType、sequence、string、boolean等)来自于等)来自于“http:/www.w3.org/2001/XMLSchema”命名空间,同命名空间,同时,它指定来自与该命名空间的元素和数据类型必须用命名空间别名时,它指定来自与该命名空间的元素和数据类型必须用命名空间别名“xsd:”做前缀。做前缀。指示该指示该schema定义的元素(定义的元素(note、to、from、heading、body)来自于来自于“http:/”命名空间。命名空间

28、。指示默认的命名空间是指示默认的命名空间是“http:/”要求element使用的命名空间必须是targetNamespace,它的作用是对元素起“限定与非限定”使用,意思是在文档范例中要求采用命名空间前缀。3131/50SchemaSchema示例示例uuuuuuuuuuuuu3232/50uuu尹老师尹老师u肖老师肖老师u提醒提醒u本周末请提醒我参加新闻发布会本周末请提醒我参加新闻发布会u3333/50 Schema Schema文档中出现的元素标记文档中出现的元素标记 元素类型描述schema包含一个已经定义的schemaelement声明一个元素attribute声明一个属性simpl

29、eType定义一个简单类型,它决定了元素和属性值的约束和相关信息complexType定义一个复合类型,它决定了一组元素和属性值的约束和相关信息group把一组元素声明组合在一起,以便它们能够一起被复合类型应用attributeGroup把一组属性声明组合在一起,以便它们能够一起被复合类型应用simpleContent应用于complexType,对它的内容进行约束和扩展等choice允许唯一的一个元素从一个组中被选择list从一个特定数据类型的集合中选择定义一个简单类型元素union从一个特定简单数据类型的集合中选择定义一个简单类型元素unique定义一个属性或元素值,它必须在一个特定范围内

30、sequence给一组元素一个特定的序列restriction定义一个约束条件3434/50使用使用XML SchemaXML Schema定义定义XMLXML文档结构文档结构u最简单的最简单的Schema文档文档u含子元素的含子元素的Schema文档文档u含子元素和孙元素的含子元素和孙元素的Schema文档文档u定义相同子元素的数量定义相同子元素的数量u定义可选项的子元素定义可选项的子元素u自定义简单类型自定义简单类型u定义属性定义属性3535/50最简单的最简单的SchemaSchema文档文档 u首先,我们写出一个最简单的首先,我们写出一个最简单的XML文档文档hello.xml:Hel

31、loWorld!u下面我们看分析定义这个下面我们看分析定义这个XML文档。这个文档。这个XML文档只有一个根元文档只有一个根元素素greeting,而且该元素不含属性,无子元素,内容是字符串,它,而且该元素不含属性,无子元素,内容是字符串,它是一个典型的简单元素,其类型为预定义类型是一个典型的简单元素,其类型为预定义类型xsd:string。定义元。定义元素的语法为:素的语法为:u那么,定义那么,定义XML文档文档hello.xml的的XMLSchema文档(文档(hello.xsd)就是:就是:3636/50含子元素的含子元素的SchemaSchema文档文档 u假设实例文档是如下的假设实例

32、文档是如下的customer.xml:朗沃教育朗沃教育成都市人民东路成都市人民东路88号物资大厦五楼号物资大厦五楼u分析实例文档,我们可以发现,分析实例文档,我们可以发现,元素含有两个子元素,它是元素含有两个子元素,它是一个复杂类型的元素,所以我们在一个复杂类型的元素,所以我们在Schema文档中采用文档中采用complexType来定来定义该元素。义该元素。元素的两个子元素元素的两个子元素和和是两个是两个简单元素,二者一次出现,我们用简单元素,二者一次出现,我们用sequence表示子元素依次出现的顺序。表示子元素依次出现的顺序。因此,定义该实例文档的因此,定义该实例文档的XMLSchema

33、文档文档customer.xsd为:为:3737/50含子元素和孙元素的含子元素和孙元素的SchemaSchema文档文档 u现在我们给出一个更复杂的文档(现在我们给出一个更复杂的文档(customer.xml):):朗沃教育朗沃教育四川四川成都成都人民东路人民东路88号物资大厦无路号物资大厦无路u在这个实例文档中,我们将地址分解成几个子元素。为此,我们需要一个更加复杂一点的在这个实例文档中,我们将地址分解成几个子元素。为此,我们需要一个更加复杂一点的Schema文档文档(address.xsd):):3838/50含子元素和孙元素的含子元素和孙元素的SchemaSchema文档文档 u我们还

34、可以采用我们还可以采用ref元素来重新编写这个元素来重新编写这个Schema文档文档address2.xsd朗沃教育朗沃教育四川四川成都成都人民东路人民东路88号物资大厦无路号物资大厦无路3939/50定义相同子元素的数量定义相同子元素的数量 u先看这个简单的订购数据实例文档先看这个简单的订购数据实例文档order.xmlAccountingBookTaxationBooku假设假设元素,即每次的订购书目不能超过元素,即每次的订购书目不能超过10种,那该怎么写这个种,那该怎么写这个Schema文档呢?这里要用到文档呢?这里要用到的的maxOccurs属性。定义这个实例文档的属性。定义这个实例文

35、档的XMLSchema文档(文档(order.xsd)为:)为:u第第6行中的行中的maxOccurs属性为属性为10,代表,代表orderItem元素可以最大有元素可以最大有10个。如果不设个。如果不设定元素个数,则可以用定元素个数,则可以用maxOccurs=unbounded来定义。来定义。u类似,如果要定义最小值,可以使用类似,如果要定义最小值,可以使用minOccurs,例如:,例如:umaxOccurs和和minOccurs这两个属性的缺省值都是这两个属性的缺省值都是1。4040/50定义可选项的子元素定义可选项的子元素 u假如上面的订书数据中,可以用书名或者书号任意一种订购,则实

36、例文档可能如下(假如上面的订书数据中,可以用书名或者书号任意一种订购,则实例文档可能如下(order2.xml):):AccountingBook7-5058-3496-7u这时,用这时,用XMLSchema文档描述的话,我们就需要使用文档描述的话,我们就需要使用choice元素。下面的代码(元素。下面的代码(order2.xsd)就是描)就是描述该述该XML文档的文档的XMLSchema文档:文档:4141/50定义可选项的子元素定义可选项的子元素 u稍微修改一下订书数据的实例文档(稍微修改一下订书数据的实例文档(order3.xml):):AccountingBook27-5058-349

37、6-7u这里假定这里假定值为值为1时,缺省。如何修改时,缺省。如何修改Schema文档呢?文档呢?order3.xsd4242/50自定义简单类型自定义简单类型 u如果预定义类型还不能满足要求,怎么办呢?下面学习自定义简单如果预定义类型还不能满足要求,怎么办呢?下面学习自定义简单类型。类型。XML的扩展性充分体现在这里。的扩展性充分体现在这里。u例如有如下的实例文档例如有如下的实例文档order4.xml:7-5058-3496-75u这里,这里,ID是一个标准的是一个标准的ISBN编码,我们如何定义这个编码,我们如何定义这个ISBN编码呢编码呢?4343/50自定义简单类型自定义简单类型u重

38、新写重新写Schema文档文档order4.xsd4444/50自定义简单类型自定义简单类型u假如我们事先确定好假如我们事先确定好ID只有只有3个,即只有个,即只有3个个ISBN是可选的,那怎么办?我们可以用是可选的,那怎么办?我们可以用enumeration元素来进行列举。元素来进行列举。4545/50自定义简单类型自定义简单类型u再来看订购量再来看订购量quantity的值,如果我们设定其的值,如果我们设定其值必须在值必须在110之间,该怎么办呢?可以这些自之间,该怎么办呢?可以这些自定义一个简单类型。定义一个简单类型。u其中,其中,minInclusive、maxInclusive分别代

39、表分别代表该类型的取值范围。该类型的取值范围。4646/50自定义简单类型自定义简单类型u最终修改后的最终修改后的Schema文档如下(文档如下(order4-1.xsd):):4747/50定义属性定义属性 u上面的上面的order.xml实例文档中实例文档中id变为变为的一个属性:的一个属性:u对此,我们在对此,我们在Schema文档中采用一个文档中采用一个attribute来定义(来定义(order.xsd):):空元素空元素u那么,实例文档中该属性值是必须的还是可有可无的呢?我们可以这样限制:那么,实例文档中该属性值是必须的还是可有可无的呢?我们可以这样限制:uu这里我们将这里我们将i

40、d属性类型作为一种自定义数据类型属性类型作为一种自定义数据类型idType。而且,用。而且,用attribute元素的元素的use属性来定义是否是必须的属性。属性来定义是否是必须的属性。required是必须值,是必须值,optional是可选值,是可选值,prohibited是无属性值。那么对于属性的缺省值,我们怎么定义呢?例如:是无属性值。那么对于属性的缺省值,我们怎么定义呢?例如:u我们还可以用我们还可以用attribute元素的另一个属性元素的另一个属性default来定义:来定义:4848/50定义属性定义属性u我们可以重新写出一个我们可以重新写出一个Schema文档(文档(orde

41、r2.xsd):):u上面的属性我们定义我们还可以采用属性组的办法来重新改写上面的属性我们定义我们还可以采用属性组的办法来重新改写Schema文文档(档(order3.xsd):):4949/50完整的订书完整的订书order.xmlorder.xml的的SchemaSchema文档文档5050/50学习方法要求学习方法要求u说明:说明:回顾定义表时字段的定义。回顾定义表时字段的定义。对比数据库的知识来学习对比数据库的知识来学习XML方法很有效。方法很有效。能够手工书写能够手工书写DTD代码很重要。代码很重要。能够看懂能够看懂Schemal定义很重要。定义很重要。能够用工具书写能够用工具书写D

42、TD代码很重要。代码很重要。5151/50总结总结u结构完整的结构完整的XML文档是指符合文档是指符合XML规则的文档。规则的文档。u合法的合法的XML文档,不但要求结构完整,而且要求符合文档,不但要求结构完整,而且要求符合DTD的验证。的验证。uDTD用来规定用来规定XML文档的语法结构,使得解析器能够理解文档的语法结构,使得解析器能够理解XML文档的内容。文档的内容。uSYSTEM关键字代表关键字代表DTD文件是一个外部文件,也就是解析器会根据文件是一个外部文件,也就是解析器会根据SYSTEM后面后面的说明到外部去寻找这个的说明到外部去寻找这个DTD文件。文件。u如果一个元素的如果一个元素

43、的CONTENT被声明为被声明为EMPTY的话,表示该元素不能包含任何子元素的话,表示该元素不能包含任何子元素和文本。和文本。uANY表示该元素其中可以包含任何本身有效的元素内容,也就是说,它能够包含在表示该元素其中可以包含任何本身有效的元素内容,也就是说,它能够包含在DTD其他位置已经声明过的元素。其他位置已经声明过的元素。uPCDATA表明该元素可以包含任何字符数据,但是不能在其中包含任何子元素。表明该元素可以包含任何字符数据,但是不能在其中包含任何子元素。uDefaultvalue属性表示为属性提供一个默认的值。属性表示为属性提供一个默认的值。uImplied属性表示如果该元素的实例中没

44、有指定该元素的值的话,就忽略该属性。属性表示如果该元素的实例中没有指定该元素的值的话,就忽略该属性。uRequired属性用来告诉属性用来告诉XML解析程序,该元素的所有实例都必须有该属性的值,就解析程序,该元素的所有实例都必须有该属性的值,就像数据表中某一个字段不允许为空一样。像数据表中某一个字段不允许为空一样。uEnumerated属性几乎和属性几乎和JAVA中的枚举变量一样,我们事先定义好一些值,该属性中的枚举变量一样,我们事先定义好一些值,该属性的值必须匹配所列出的这些值。的值必须匹配所列出的这些值。u命名空间允许我们在一个文档中结合不同的元素和属性定义,并指明这些元素和属命名空间允许我们在一个文档中结合不同的元素和属性定义,并指明这些元素和属性的定义来自哪里。性的定义来自哪里。uSchema是另一种文档类型定义,它遵循是另一种文档类型定义,它遵循xml的语言规范。的语言规范。uSchema是可扩展的,支持命名空间,可以在一个是可扩展的,支持命名空间,可以在一个xml文档中使用多个文档中使用多个Schema。uSchema支持更多的数据类型以及更多的元素类型。支持更多的数据类型以及更多的元素类型。

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 教育专区 > 小学资料

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知得利文库网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号-8 |  经营许可证:黑B2-20190332号 |   黑公网安备:91230400333293403D

© 2020-2023 www.deliwenku.com 得利文库. All Rights Reserved 黑龙江转换宝科技有限公司 

黑龙江省互联网违法和不良信息举报
举报电话:0468-3380021 邮箱:hgswwxb@163.com