第6章 使用Schema-new.ppt

上传人:s****8 文档编号:69350461 上传时间:2023-01-02 格式:PPT 页数:54 大小:213KB
返回 下载 相关 举报
第6章 使用Schema-new.ppt_第1页
第1页 / 共54页
第6章 使用Schema-new.ppt_第2页
第2页 / 共54页
点击查看更多>>
资源描述

《第6章 使用Schema-new.ppt》由会员分享,可在线阅读,更多相关《第6章 使用Schema-new.ppt(54页珍藏版)》请在得力文库 - 分享文档赚钱的网站上搜索。

1、在在XML文档中使用文档中使用Schema第第6章章6.1 XML Schema6.1 XML Schema6.1 XML Schema6.1 XML Schema的基本概念的基本概念的基本概念的基本概念6.2 6.2 6.2 6.2 元素声明元素声明元素声明元素声明6.3 6.3 6.3 6.3 属性声明属性声明属性声明属性声明6.4 6.4 6.4 6.4 元素内容类型的指定元素内容类型的指定元素内容类型的指定元素内容类型的指定6.5 6.5 6.5 6.5 子元素的出现次数设置子元素的出现次数设置子元素的出现次数设置子元素的出现次数设置6.6 6.6 6.6 6.6 模型组模型组模型组模

2、型组6.7 6.7 6.7 6.7 实例:为图书借阅系统设计实例:为图书借阅系统设计实例:为图书借阅系统设计实例:为图书借阅系统设计SchemaSchemaSchemaSchema文档文档文档文档1 HYMXMLXML教程教程教程教程 6.1 什么是什么是XML Schema?XML Schema同DTD一样,验证XML文档的有效性也是用来确定也是用来确定也是用来确定也是用来确定XMLXML文档结构文档结构文档结构文档结构、元素及属性的名称和类型元素及属性的名称和类型元素及属性的名称和类型元素及属性的名称和类型的的的的。可以定义XML文档中存在哪些元素和元素之间的关系,并且可以定义元素和属性的

3、数据类型。与DTD不同的是,XML Schema使用XML语法,而且在元素和属性的数据类型定义方面,功能比DTD更强大。目前,XML Schema规范有多个版本,最为正式的XML Schema语言是由W3C指定的XML Schema规范,简称为XSD(XML Schema Definition)。2 HYMXMLXML教程教程教程教程Schema的优点的优点1)1)XML Schema基于XML,本身即XML文档,没有专门的语法,便于学习和编写2)2)XML Schema支持一系列的数据类型(int、float、Boolean、date等),还提供了可扩充的数据模型。克服了DTD的限制 DTD

4、没有数据类型的支持,只有字符数据,3)3)XML Schema支持命名空间,使XML文档可以同时使用多个对应的Schema文件来完成文档的有效性,但一个XML文档只能对应一个DTD文档4)4)自定义简单类型(XML的扩展性充分体现在这里)5)5)内容模型(contentmodel)有力支持 DTD的内容模型是很弱的,只允许我们限制元素的次序或者选择列表,不能指定确切次数。3 HYMXMLXML教程教程教程教程Schema文件的基本结构文件的基本结构XML Schema文件由一组元素组成,其根元素是Schema,其文件结构为简单类型(simple type)元素声明 元素声明 复杂类型(comp

5、lex type)元素声明xmlns:指定该Schema的命名空间必须以Schema作为根元素详见【例6-1(b)】Schema文档。简单类型(simple type)元素指的是那些仅包含文本(不能包含子元素)、并且没有属性的元素。文本(text)可以是字符串、日期、数字等。复杂类型(complex type)元素泛指那些包含子元素或/和具有属性的元素。4 HYMXMLXML教程教程教程教程Schema文件的基本结构文件的基本结构!-6-2.xml-=ISBN-534926335 VBVB语言教程语言教程/朱国华朱国华/2007-01-232007-01-23 26.0026.00元元/5 H

6、YMXMLXML教程教程教程教程Schema文件的基本结构文件的基本结构!-6-1.xsd-/6 HYMXMLXML教程教程教程教程Schema文件的基本结构文件的基本结构!-6-1.xsd-/“图书图书”的元素的元素(element).因为这个元素有属性因为这个元素有属性(attributes)和子元素,因此我们认为它是一个复杂和子元素,因此我们认为它是一个复杂类型类型(complexType)(因为简单类型,只能有值,而不能有子元素或者属性因为简单类型,只能有值,而不能有子元素或者属性)。同时我们还注意到。同时我们还注意到“图书图书”元素下的子元素,都是按照一定的顺序排列,因此我们使用顺序

7、模型元素下的子元素,都是按照一定的顺序排列,因此我们使用顺序模型(sequencemodel).7 HYMXMLXML教程教程教程教程Schema文件的基本结构文件的基本结构顺序模型(sequencemodel)是一个定义子元素排列顺序的元素,在下面的章节,我们还将看到两个其它的类似的模型,choice(选择其中之一)和all(任意顺序)。8 HYMXMLXML教程教程教程教程Schema文件的基本结构文件的基本结构XML引用SchemaSchema文件:=ISBN-534926335 VBVB语言教程语言教程/朱国华朱国华/2007-01-232007-01-23 26.0026.00元元/

8、9 HYMXMLXML教程教程教程教程XML Schema的的数据类型数据类型1内置类型XMLSchema内置了44种简单类型。P99表6-1常用的XMLSchema内置数据类型如果内置简单类型的44种还不能满足要求,怎么办呢下面学习自定义简单类型。(XML的扩展性充分体现在这里)创建简单类型语法格式创建简单类型语法格式simpleTypep1002用户自定义类型用户自定义类型用户自定义类型又分为自定义简单类型和自定义复杂类型两种。自定义简单类型自定义简单类型是指在内置的数据类型或者用户已派生的简单数据类型基础上,对其数据内容进行限制而派生的新的数据类型。那些派生它们的数据类型称为它们的基类型

9、。自定义复杂类型自定义复杂类型,是指定义一个能够包含有子元素和属性的数据类型。如果一个元素包含有子元素或属性,那么它的数据类型就是复杂类型。10 HYMXMLXML教程教程教程教程XML Schema的的数据类型数据类型创建简单类型语法格式创建简单类型语法格式simpleTypep100使用使用simplyType元素自定义命名简单类型时,一般语法元素自定义命名简单类型时,一般语法格式为:格式为:见表见表6-2.用于描述自定义数据类型的细节,例如范围、枚举等限制。value属性用于指定范围或长度等具体的细节限制。11 HYMXMLXML教程教程教程教程XML Schema的的数据类型数据类型创

10、建简单类型创建简单类型simpleTypeorder4.xml7-5058-3496-7257-5005-6450-350ID是一个标准的是一个标准的ISBN编码,我们怎么限制这个编码,我们怎么限制这个ISBN编码呢编码呢订购量订购量quantity的值,如果我们设定其值必须在的值,如果我们设定其值必须在150之间,该之间,该怎么办呢?怎么办呢?12 HYMXMLXML教程教程教程教程XML Schema的的数据类型数据类型订购量订购量quantityquantity的值,如果我们设定其值必须在的值,如果我们设定其值必须在1 15050之间,可以自定义之间,可以自定义一个简单类型。一个简单类型

11、。xsd:restriction base=其中,其中,minInclusive,maxInclusiveminInclusive,maxInclusive分别代表该类型的取值范围。分别代表该类型的取值范围。SchemaSchema文档文档使用使用这个自定义的简单类型这个自定义的简单类型quantityTypequantityType /type=“type=“quantityTypequantityType”而不是而不是type=“type=“xsdxsd:quantityTypequantityType”Order4-2.xsdOrder4-2.xsd见备注见备注13 HYMXMLXML教

12、程教程教程教程XML Schema的的数据类型数据类型idType是一个自定义的简单类型。是一个自定义的简单类型。我们对它做了限制:我们对它做了限制:代表它是基于一个字符串类型。代表它是基于一个字符串类型。再用再用pattern元素元素来描述该字符串的形式。来描述该字符串的形式。value=“d1-d4-d4-d1”这是一个这是一个正则表达式正则表达式,关于正则表,关于正则表达式达式C#14 HYMXMLXML教程教程教程教程正则表达式正则表达式正则表达式(正则表达式(regularexpression)是就是由普通字符(例是就是由普通字符(例如字符如字符a到到z)以及特殊字符(称为元字符)组

13、成的文字)以及特殊字符(称为元字符)组成的文字模式。用来快速、高效地处理文本数据的工具。模式。用来快速、高效地处理文本数据的工具。正则表达式不仅可用来正则表达式不仅可用来确认一段文本是否与一个预定义的模式确认一段文本是否与一个预定义的模式相匹配相匹配,还可以用于从文本中抽取符合某一模式的数据。,还可以用于从文本中抽取符合某一模式的数据。d,从-的任一数字,dd匹配72,但不匹配aa或7aw任一单词字符,包括A-Z,a-z,0-9和下划线15 HYMXMLXML教程教程教程教程XML Schema的的数据类型数据类型只有只有3个个ISBN是可选的,那怎么办?我们可以用是可选的,那怎么办?我们可以

14、用enumeration元素元素来列来列举。举。16 HYMXMLXML教程教程教程教程6.2元素声明元素声明元素声明就是把一个元素的名字和某种数据类型关联起来的过程。Schema中的元素声明可以是全局的,也可以是局部的。n全局元素声明:指的是那些在Schema元素下声明的元素,这些元素是Schema元素的直接子元素。由于这些元素可以在整个Schema中被引用,因此被称作全局元素。n局部元素声明:只出现在复杂类型定义内部。局部元素只在该类型定义中有效,是一次性的,在别处不能引用。17 HYMXMLXML教程教程教程教程6.2 XML Schema的元素声明的元素声明简单元素:简单元素:例如:例

15、如:type可以是自定义简单类型复杂元素:复杂元素:本例中,本例中,complexType元素是在元素是在元素内定义的,是局部匿名复元素内定义的,是局部匿名复杂类型。杂类型。18 HYMXMLXML教程教程教程教程自定义复杂类型名称自定义复杂类型名称复杂元素:复杂元素:自定义复杂类型名称自定义复杂类型名称自定义复杂类型名称自定义复杂类型名称19 HYMXMLXML教程教程教程教程自定义复杂类型名称自定义复杂类型名称【例6-5(a)】有多层子元素的XML文档。VB语言教程朱国华450007郑州市中原西路88号88#20 HYMXMLXML教程教程教程教程自定义复杂类型名称自定义复杂类型名称【例6

16、-5(b)】有多层子元素的Schema文档。21 HYMXMLXML教程教程教程教程自定义复杂类型名称自定义复杂类型名称【例6-5(c)】定义一个名称为authorType命名复杂类型22 HYMXMLXML教程教程教程教程4.4 XML Schema的元素声明的元素声明复杂元素参照声明方式:复杂元素参照声明方式:要求子元素必须在父元素之前声明。要求子元素必须在父元素之前声明。好处:提高元素的重复使用性。好处:提高元素的重复使用性。allp116choicesequence23 HYMXMLXML教程教程教程教程案例:教工案例:教工苏青男12345678副研究员王静8765432124 HYM

17、XMLXML教程教程教程教程案例:教工案例:教工.xsd(1)25 HYMXMLXML教程教程教程教程案例:教工案例:教工.xsd(2)26 HYMXMLXML教程教程教程教程6.3属性声明属性声明属性声明是把一个属性的名字和某个特定的简单类型相关联。属性声明可以是全局的,也可以是局部的。属性声明使用attribute元素,属性声明的一般格式为:例如:27 HYMXMLXML教程教程教程教程6.3 属性声明属性声明在XML Schema文档中,声明XML元素的属性可使用attribute元素来实现。其语法为:除了name,type属性必需外,其它属性都是可选的。use属性来定义是否是必须的属性

18、:其中值required是必须值,optional是可选值,prohibited是无属性值 例如:28 HYMXMLXML教程教程教程教程6.3属性声明属性声明属性声明是把一个属性的名字和某个特定的简单类型相关联。属性声明可以是全局的,也可以是局部的。6.3.1局部属性声明局部属性声明完全出现在复杂类型定义中。局部声明的属性只在该类型定义中有效,不能被其他类型重用。【例6-6(a)】含有元素属性的XML文档。VB语言教程朱国华29 HYMXMLXML教程教程教程教程6.3.1局部属性声明【例6-6(b)】含有元素属性的Schema文档。use控制某个属性是否必须出现(required)可选(o

19、ptional)、禁止出现(prohibited)属性提供固定的或默认的内容,默认值和固定值分别由default和fixed属性来指定30 HYMXMLXML教程教程教程教程6.3.2全局属性声明全局属性声明出现在Schema文档的最顶层,它的父元素是schema元素。全局声明的属性可以在多个复杂类型中被引用。【例6-7】ch6-7.xsd将例6-6中的“书号”和“类别”两个属性声明修改为全局属性声明31 HYMXMLXML教程教程教程教程6.46.4 元素内容类型的指定元素内容类型的指定(略略)元素的内容是指在元素的起始标记和结束标记之间的文本和子元素。指在元素的起始标记和结束标记之间的文本

20、和子元素。复杂类型子元素的顺序和结构称为它的“内容模型”。复杂类型的内容类型有4种:n空元素。n纯文本内容。n纯元素。n混合内容。元素的内容类型不依赖于属性,所有这些内容类型都允许有属性。32 HYMXMLXML教程教程教程教程6.4.1空元素空元素【例例6-8(a)】一个空元素实例。【例6-8(b)】带有一个空元素的复杂类型声明与定义。33 HYMXMLXML教程教程教程教程6.4.2纯文本内容纯文本内容纯文本内容元素只含有简单内容(文本和属性)而没有子元素。简单类型和具有简单内容的复杂类型的惟一区别在于后者可以有属性。当用到简单内容时,通过在simpleContent元素里定义一个扩展或约

21、束派生复杂类型(使用extension或restriction元素对基本简单类型扩展或限制)。【例例6-9(a)】简单内容元素实例。VB语言教程26.0034 HYMXMLXML教程教程教程教程6.4.2纯文本内容纯文本内容【例例6-9(b)】一个带有简单内容的复杂类型声明与定义。一个带有简单内容的复杂类型声明与定义。35 HYMXMLXML教程教程教程教程6.4.3纯元素纯元素纯元素只允许包含子元素,不能有自己的直接文本内容。【例例6-10(a)】纯元素内容实例。【例6-10(b)】带有纯元素内容的复杂类型。对复杂类型进行扩展,在complexContent元素内部使用extension元素

22、实现。注意:在派生自定义的数据类型时,如果基类型为简单类型,使用simpleContent元素;当基类型为复杂类型时,则使用complexContent元素。36 HYMXMLXML教程教程教程教程6.4.4混合内容混合内容如果一个元素同时包含有子元素和文本数据,则元素的内容称为混合内容。方法为:在complesType元素中加入mixed(默认值是flase)属性,并给它赋值为true。【例例6-11(a)】混合内容实例。该书主要描写的是唐僧师徒4人西天取经,历经九九八十一难,最终修成正果的故事。西游记吴承恩为明朝人。12.50元37 HYMXMLXML教程教程教程教程6.4.4混合内容混合

23、内容【例6-11(b)】含有混合内容的复杂类型。38 HYMXMLXML教程教程教程教程6.5子元素的出现次数设置子元素的出现次数设置minOccursmaxOccurs元素可以出元素可以出现现的次数的次数010或11110unbounded无限1unbounded至少一次0unbounded至少是minOccurs次兄弟?姐妹?minOccurs表示元素可以出现的最少次数,maxOccurs表示元素可以出现的最多次数。两个属性的默认值都是1。注意:minOccurs=maxOccurs。minOccurs 和 maxOccurs 之间的关系39 HYMXMLXML教程教程教程教程6.5子元素

24、的出现次数设置子元素的出现次数设置【例例6-12(a)】设置子元素的出现次数。设置子元素的出现次数。407-5058-3496-7257-5005-6450-350XML技术技术50或或如何解决?41order4.xsd42 HYMXMLXML教程教程教程教程6.6模型组模型组n模型组允许把子元素或引用组合起来,从而构建更有意义的内容模型,方便了复用和继承。模型组共有3种:sequence组、all组和choice组。n每种复杂类型都必须有一个模型组子元素,在模型组中进行元素声明或元素引用。元素声明必须放在容器内,不能直接包含在complexType元素中,因为不允许直接在一个元素中添加另外一

25、个子元素。43 HYMXMLXML教程教程教程教程6.6.1all组组all组(使用all元素)用来表示其组中的所有子元素在XML实例中可以以任何次序出现,并且每个子元素只能出现一次。在使用all组时需要遵循下列规则:nall组只能出现在任何内容模型的顶层,不能出现在其他模型组中。nall组只能包含元素声明和引用,而不能包含其他组。对于它所包含的子元素,maxOccurs必须为1,minOccurs只可以为0或1。nall元素本身不能出现多次。n在all组中声明的子元素只能在all组中使用,在文档其他任何地方都不能出现。44 HYMXMLXML教程教程教程教程6.6.1all组组【例例6-13

26、(a)】all组举例。组举例。例6-14.xsd45 HYMXMLXML教程教程教程教程6.6.1all组组【例例6-13(b)】使用all组的有效实例1。ISBN-534926335朱国华VB语言教程【例例6-13(c)】使用all组的有效实例2。朱国华VB语言教程计算机46 HYMXMLXML教程教程教程教程6.6.2choice组组在choice模型组(使用choice元素)中声明的子元素集中,必须有且只有一个元素出现在相应的XML实例中。【例例6-15(a)】用choice组声明“图书”元素子元素。47 HYMXMLXML教程教程教程教程6.6.2choice组组【例例6-15(b)】

27、使用choice组的有效实例。VB语言教程【例例6-15(c)】使用choice组的有效实例。26.00元48 HYMXMLXML教程教程教程教程6.6.2choice组组choice组的一个普遍用法是,把它的maxOccurs属性设置为unbounded,从而允许choice组重复自己。这将允许choice组中的任何元素在XML实例中可以以任意顺序、任意次数出现。【例例6-16(a)】重复的choice组。=unbounded49 HYMXMLXML教程教程教程教程6.7实例:为图书借阅系统设计实例:为图书借阅系统设计Schema文档文档n【例例6-17(a)】图书借阅系统的Schema文档

28、。50 HYMXMLXML教程教程教程教程总结2-1n根据W3C,Schema是“一组用于约束结构和清晰表达XML文档的信息集的规则”。Schema是用于描述数据库结构的模型nXML从SGML继承了DocumentTypeDefinitions(文档类型定义,DTD)。DTD用于定义内容模型、有效顺序、元素嵌套以及有限程度的属性数据类型nSchema克服了这些限制,并允许Web应用程序健壮地交换XML数据nXMLSchema提供了一系列新功能,其中包括:nXML语法用作创建XMLSchema文档的基础。n更丰富的数据类型n原型n属性分组n可完善原型51 HYMXMLXML教程教程教程教程总结2

29、-2n常用Schema元素包括:nelement元素nattribute元素nsimpleType元素ncomplexType元素52 HYMXMLXML教程教程教程教程小结小结本章介绍了XML Schema,详细介绍了如果用上述文档来约束XML文档。重点:重点:重点:重点:XML Schema基本结构nXML Schema复杂元素和数据类型53 HYMXMLXML教程教程教程教程第6章练习题1.1.在在XMLXML文件中使用文件中使用DTDDTD有何好处?有何好处?2.2.SchemaSchema有什么特点?有什么特点?3.3.什么是实体?什么是实体?4.4.为学生学籍管理的为学生学籍管理的XMLXML文档设计文档设计DTDDTD文件。文件。5.5.学生学籍管理的学生学籍管理的XMLXML文档有学号,姓名,性别,家庭地址,家庭关系(父文档有学号,姓名,性别,家庭地址,家庭关系(父母、兄弟,姐妹),联系方式(电话、手机号,母、兄弟,姐妹),联系方式(电话、手机号,Email).Email).6.6.上机作业二:为上题学生学籍管理的上机作业二:为上题学生学籍管理的XMLXML文档设计文档设计XML SchemaXML Schema文件文件54

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

当前位置:首页 > 生活休闲 > 生活常识

本站为文档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