




已阅读5页,还剩105页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第4章 命名空间与XML Schema,1,章节结构,4.1 命名空间4.2 XML Schema,2,4.1 命名空间,命名空间(namespace):零个或多个名称的集合,在命名空间中,每一个名称都是唯一的,并且是按照命名空间的规则来构建的。,3,为什么要用命名空间?在XML的实际应用中,人们常常为不同行业和领域用XML制定不同的语言标准,比如电子商务、远程教育、电子书都分别用XML制定了语言标准,然后针对不同的语言编写不同的模块化处理程序假如我们通过重新命名的方法解决名称冲突问题,那么我们将面临着,针对原名称开发的应用程序不可再利用的危险,4,5,wang 63880000,li63880001G ,wang 638800003 ,wang 638800003 Ali638800012B,?,为什么要用命名空间?解决名称冲突的一个比较好的解决方案是:给不同的语言赋以不同的名称空间,应用程序通过名称空间来区分一个元素到底来自于哪一个语言,XML命名空间就是对这种方案的具体实现()命名空间前缀(prefix):用来代替命名空间字符串URI和标记名称简单说来,制定XML命名空间标准的初衷是为了解决XML文档中命名的冲突问题,6,名称空间,命名空间的定义:是一个名称集合,将XML文档和引用的URI(uniform resource identifier)标识的名域相结合,用不同的URI来标识不同的元素和属性,来限定其中的元素和属性。W3C制定的命名空间,可以到/TR/REC-xml-names查询名称空间的作用域是定义名称的元素及其子树。,7,4.1.2 什么是URI,URI(uniform resource identifier)通用资源标志符使用命名空间必然要使用URI主要用来界定资源对象的名称,该资源对象一经命名后即具唯一性,且具永续性比如使用公司的网址:。则此网址具有唯一性,8,URI的两种表达形式:URL (uniform resource locator) :如,最常用URN (uniform resource name) :由IETF(internet engineering task force)组织制定,也指向一种资源对象区别:URL除了显示资源地址外还会将整个通信协议表现出来,如http、ftpURN以资源名称作为标识,9,URN的使用:基本语法:urn:NID(Namespaces Identifier):代表所要使用的资源组织名称,如ISBN组织、相关的政府组织等NSS(Namespaces Specific String):是一个唯一的字符串,代表要使用的资源举例:Urn::booksUrn:ISBN:0-394-3866-6,10,4.1.3 使用命名空间的规则,规则1:引用命名空间的两种方法NSAttName=PrefixedAttName|DefaultAttName规范了声明命名空间的两种方法:前置命名法默认命名法,11,规则2:前置命名法的语法PrefixedAttName=“xmlns:”+NCName规范了声明前置命名法的语法:由xmlns关键字来告诉解释程序该元素要套用的命名空间,在“:”之后加上为命名空间所取的别名此规则可以让不同的元素与属性套用不同的命名空间.以下是为命名空间起的别名dsxmlns:ds=/tr/rec-htm140,12,规则3:使用默认命名法的语法DefaultAttName=“xmlns”规范了声明默认命名法的语法:由xmlns关键字直接加上命名空间命名此规则可以让引用的元素直接套用该命名空间,子元素也自动引用相同的命名空间,以下是默认的命名空间xmlns=/tr/rec-htm140,13,规则4:定义命名空间的构成NCName=(Letter|_)(NCNameChar)*规范了定义命名空间代名的构成方法:使用字母或下划线开头,后跟任意数量的NCNameChar字符,14,规则5:命名空间代名能使用的字符NCNameChar:=Letter|Digit|.|-|_|CombiningChar| Extender使用任意数量的字母、数字、点符、下划线及其他扩展字符,15,eg. 默认命名法,16,精彩XML默认命名法,eg. 前置命名法,17,精彩XML前置命名法,前置命名法和默认命名法的区别:前置命名法必须为所引用的命名空间另取一个别名,使用时直接使用别名即可;而默认命名法没有别名使用默认命名法,元素一经引用命名空间,则元素的子元素会自动引用相同的命名空间;但是使用前置命名法,元素的任何子元素及属性仍要加上别名前缀,18,如果在一份XML文档中引用单一的命名空间,则使用前置命名空间或默认命名空间都可以;但如果引用多个命名空间时,则需要两种命名空间的配合使用。,19,引用多个命名空间画一个方形 有关矩形的相关信息 2004/11/17,默认命名法,前置命名法,默认命名法,综上所述,XML命名空间通过将元素和属性名称与URI所标识的命名空间相联系,提供了一种简单的方法来验证在XML文档中使用的元素和属性的名称,以保证其唯一性,而不会引起冲突。元素或属性的定义由一个唯一的名称定义,名称包括两个部分:命名空间的URI和本地名称。引用前置命名法空间中的元素、属性的方法:前缀名:元素名 或 前缀名:属性名声明时若前缀名省略,则声明的是缺省的空间,引用缺省名空间中的元素、属性时可不加前缀名,20,4.2 XML Schema,4.2.1 XML Schema概念对于XML Schema语言有两种模型:Microsoft开发的Microsoft XML SchemaMicrosoft XML Schema已经开发成熟并运用到实际W3C开发的W3C XML Schema。最为正式的XML Schema语言是由W3C指定的XML Schema规范,简称为XSD(XML Schema Definition)。xsd也提供了数据类型的支持和结构定义的方法。XSD(XML schema definition),本身也是一个XML文档,用于描述另一个XML文档,如果被描述的XML文档符合schema中的XML描述,那么就可以说它是该schema的一个有效实例,21,22,XML Schema的标准共分为3个部分:第一部分为引导(primer),是对Schema的总体介绍,其目的是帮助读者快速理解如何使用Schema语法创建Schema文档第二部分为结构(structure),是为描述XML 1.0文档结构和内容约束提供了文档定义第三部分是数据类型(datatypes),为Schema及其他XML规范定义了数据类型,让用户定义出更明确的类型,4.2.2 DTD与XML Schema,DTD的优点与不足DTD有许多优点:相对简单,语法紧凑,而且广泛地为XML实现者理解和支持;如果设计得当,它可以是高度模块化的、灵活的和可扩展的。DTD也有一些不足,它采用独有的非XML语法,仅提供非常有限的、仅适用于属性的数据类型。,23,DTD 与Schema不同之处与DTD的结构不同:Schema本身是一XML文档支持命名空间:XML文档只能引用一份DTD多样化的数据类型: Schema中类型丰富。如布尔型、数字、日期和时间、URI、整型、小数、实数以及时间间隔高度扩充性:只要设置XML Schema中的模式属性为open,可以加上未被定义的新元素,24,Schema作用,Schema 文档用来验证XML 文档的正确性,用来判断实例是否符合模式中所描述的所有约束,涉及到检查实例中所有的元素和属性。Schema 主要检验如下内容:验证数据的显示格式是否正确及是否超出值的范围;验证所有必需的信息都存在;确保不同使用者对文档理解的方式相同。除了对XML 文档的验证外,Schema 文档还在一定程度上扩充实例:为元素和属性添加默认值和固定值;使具有简单类型的元素和属性值中的空白符规范化。,XML Schema的优点:1) XML Schema基于XML,没有专门的语法 2) XML Schema可以象其他XML文件一样解析和处理 3) XML Schema支持一系列的数据类型(int、float、Boolean、date等) 4) XML Schema提供可扩充的数据模型。 5) XML Schema支持综合命名空间 6) XML Schema支持属性组。,26,4.2.4 XML Schema与命名空间,编写XML Schema时,必须引用一个命名空间一般是/2001/XMLSchema微软制作的命名空间schemas-microsoft-com:xml-dataXML Schema应用命名空间可用URL或URN,27,28,This is a sample,XML Schema文件中引用URN,XML Schema文件中引用URL,Schema 的引用,一个模式可能由多个模式文档构成。多个模式文档通过包含或导入机制来形成模式,当其他模式文档与主模式文档具有相同的目标名称空间时,需要使用包含;当模式文档之间各自拥有不同的目标名称空间时,需要使用导入。,29,【例5.3】 关于多个模式文档通过包含实现定义的例子,代码如源程序code5_3.xsd 所示。要验证XML 文档,必须指定Schema 文档的位置。模式的位置可以利用带有名称空间模式的xsi:schemaLocation 属性以及不带名称空间XML 模式的xsi:noNamespace SchemaLocation属性来指定,它们位于根/顶级元素中或XML 文档的任何其他元素中。,30, ,指明xsd文件中预定义的元素、属性和数据类型的来源,当Schema 文档不包括targetNamespace 属性时,应当通过XML 文档根元素的noNamespaceSchemaLocation 属性及W3C的Schema 实例名称空间(xmlns:xsi=“ /2001/XMLScheam-instance”)来引用XML Schema 文件。eg1.xml:,31,noNamespaceSchemaLocation属性来指定XML文档的schema,4.2.3 XML Schema的结构,XML Schema的基本架构也是一个树状的XML结构根元素名称一定是元素根元素下面声明其他元素XSD文档至少要包括以下几部分:Schema根元素和XML模式命名空间的定义Element定义,32,关于书籍信息的XML 文档,代码如源程序2.xml 所示。,三国演义罗贯中80.00 滚滚长江东逝水,浪花淘尽英雄。是非成败转头空。青山依旧在,几度夕阳红。白发渔樵江渚上,惯看秋月春风。一壶浊酒喜相逢。古今多少事,都付笑谈中。经典好书文艺出版社1998.10,33,Eg. 关于书籍信息模式定义的完整例子,代码如源程序2.xsd 所示。,34,Eg. 关于书籍信息模式定义的完整例子,代码如源程序2.xsd 所示。,35,Eg. 引用2.xsd文件来验证的2-1.xml,三国演义罗贯中80.00滚滚长江东逝水,浪花淘尽英雄。是非成败转头空。青山依旧在,几度夕阳红。白发渔樵江渚上,惯看秋月春风。一壶浊酒喜相逢。古今多少事,都付笑谈中。经典好书文艺出版社1998-10-01,36, ,37,XML Schema的结构图,Schema元素说明,38,schema在schema 文档中必须定义一个且只能定义一个schema 根元素。根元素表明了文档类型根元素还包括模式的约束、XML 模式名称空间的定义,其他名称空间的定义、版本信息、语言信息和其他一些属性。定义如下:,39,元素的声明语法:其中,name 是元素类型的名称,必须是以字母或下划线开头,而且只能够包含字母、数字、下划线、连接符及句号。type 属性是必要的,说明元素的数据类型。XSD 中的元素是利用element 来声明的。其中name 属性是元素的名字,type 属性是元素值的类型,在这里可以是XML Schema 中内置的数据类型或其他类型。,40,eg:,41,Element.xsd,Element.xml罗贯中,Attribute定义属性的方法如下:eg.,42,Attr.xsd ,Attr.xml,元素类型分为:简单类型简单数据类型的元素不能加入子元素,不可加入任何属性,即简单数据类型的元素适于存放无附加信息的数据和叶子元素简单数据类型有布尔、日期、整数、浮点数与字符串类型等复杂类型复杂数据类型由简单数据类型组合而成,可再包含其他复杂数据类型、简单数据类型及属性说明,43,4.2.5 简单类型元素,语法:每个简单类型元素有一个name属性对应要验证的XML元素的名称XML元素的数据类型是通过type属性进行设置元素出现的个数使用minOccurs、 maxOccurs设置下、上限;这两个属性具有可选择性,44,基本数据类型,基本数据类型是在XML模式中使用的每种数据类型的最基本构成块,XML模式以这些数据类型为基础,为创建自定义类型提供数据类型最通用的基本数据类型包括:boolean:可以是1(True)或者0(False)dateTime:表示日期decimal:表示任意精度的十进制数字string:字符数据,45,派生类型,利用派生类型通常可以提高验证的等级这些类型进一步限制了基本数据类型的值,最通用的派生类型有:int:从long型派生而来,表示大多数整数nonNegativeInteger:表示大于或者等于0的一个整数,从integer派生而来nonpositiveInteger:表示小于或者等于0的一个整数positiveInteger:表示大于0的一个整数Short:表示-3276832768之间的一个整数 参见p75图(4-3),46,4.2.6 高级的简单类型元素,赋予简单类型元素更多变化辅助元素有,47,元素040206a.XSD ,48,040206a.xml60,元素,49,040206b.xsd ,040206b.xmlE,50,元素04.02.06c.xsd ,51,04.02.06c.xml 会员的兴趣资料Sport Reading Shopping,52,元素04.02.06d.xsd ,53,04.02.06d.xmlAB,54,元素04.02.06e.xsd ,55,04.02.06e.xmlA123456789,56,4.2.7 注释说明元素,注释方法:XML中的注释方法专用注释元素annotation语法:放入其他相关的信息,57,使用元素的例子 a.xsd This is explain information. ,58,4.2.8 复杂类型元素,复杂型元素主要是由用户自行定义、组合以创造出合适的元素基本声明语法:,59,040208.XSD,60,一个具有BookType数据类型的Book元素BookType数据类型由两个简单类型元素Title和Author构成,这两个元素都是字符串类型,参照声明方式语法:,61,040208a.XSD,62,参照法可以提高元素的重复使用性,让多个元素同时共享和元素的设置,040208d.XSD,63,4.2.9 为复杂类型元素加入属性,只有复杂类型元素可以加属性,简单类型元素不允许加属性本身须为简单类型为复杂类型元素加入属性的语法: 声明属性元素时,一定要设置属性名称和属性类型Required属性决定该属性是否一定要填入数据,有yes和no两种,64,040209.xsd,65, ,66,Element Declaration for an element with subelements and attribute.,67, John 42 Susan 27, 27 Susan John 42,?,小结,68,本讲介绍了XML中的名称空间:为了使应用程序能区分Internet上的XML中同名的不同标记,XML使用了名称空间。名称空间由前缀和URI两部分组成,其中真正使同名标记相互区分的URI。名称空间的作用域是定义名称的元素及其子树。没有前缀的名称空间称为缺省名称空间。,Schema 是描述XML 文档的文档,用来定义XML 文档的格式。最常用的用法之一就是依照预定义好的规则来验证XML 文档的有效性。Schema 可以确认:(1) 元素和属性的结构;(2) 元素出现的顺序;(3) 对元素和属性的数据值的取值范围进行限定;(4) 保证实例中值的唯一性。,69,与DTD 相比较而言,XML Schema 采用XML 的语法,并且支持名称空间,提供丰富的数据类型定义手段,具有很强的描述能力、扩展能力和处理维护能力。元素和属性是XML 文档的基本构件。Schema 主要包括元素和属性的声明及定义,模式文档由元素、属性、名称空间和XML 文档中的其他结点构成,并且至少要包含:schema根元素、XML 模式名称空间的定义和元素定义。元素是利用element 标记来声明的,其中name 属性是元素的名字,type 属性是元素值的类型。属性实现的方法是使用attribute 元素。,70,作业,P84 第1题根据书籍XML 文档,建立Schema 文档和DTD文档。三国演义罗贯中80.00 滚滚长江东逝水,浪花淘尽英雄。是非成败转头空。青山依旧在,几度夕阳红。白发渔樵江渚上,惯看秋月春风。一壶浊酒喜相逢。古今多少事,都付笑谈中。,71,学号姓名,补充,72,String Data Types (1 of 2),73,String Data Types (2 of 2),74,String Examples,String Can contain characters, line feeds, carriage returns, and tab characters. NormalizedString Can contains characters, but the XML processor will remove line feeds, carriage returns, and tab characters. Token Can contains characters, but the XML processor will remove line feeds, carriage returns, tabs, leading and trailing spaces, and multiple spaces. ,75,Date and Time Data Types,76,Date and Time Examples (1 of 5),Date The date is specified in the form CCYY-MM-DD:CC indicates the century YY indicates the year MM indicates the month DD indicates the day 2002-09-24TimeThe time is specified in the form hh:mm:ss:hh indicates the hour mm indicates the minute ss indicates the second 09:30:10.5,77,Date and Time Examples (2 of 5),DateTimeThe dateTime is specified in the form CCYY-MM-DDThh:mm:ss:CC indicates the century YY indicates the year MM indicates the month DD indicates the day T indicates the start of the required time section hh indicates the hour mm indicates the minute ss indicates the second 2002-05-30T09:00:00,78,Date and Time Examples (3 of 5),Time ZonesTo specify a time zone, you can either add a Z behind the UTC time, or you can specify an offset from the UTC time by adding a positive or negative time behind the time:2002-05-30T09:30:10Z2002-05-30T09:30:10-06:002002-05-30T09:30:10+06:00,79,Date and Time Examples (4 of 5),DurationThe time interval is specified in the form PnYnMnDTnHnMnS:P indicates the period (required) nY indicates the number of years nM indicates the number of months nD indicates the number of days T indicates the start of a time section nH indicates the number of hours nM indicates the number of minutes nS indicates the number of seconds,80,Date and Time Examples (5 of 5),P5YP5Y2M10DP5Y2M10DT15HPT15H-P10D,81,Numeric Data Types (1 of 2),82,Numeric Data Types (2 of 2),83,Numeric Examples,DecimalNote: The maximum number of decimal digits you can specify is 18.999.50-999.5230Integer999-999Boolean999,84,元素声明, Content: (annotation?,(simpleType|complexType)? (unique|key|keyref)*),85,Eg.元素声明 ,86,属性声明, (any attribute with non-schema namespace)Content: (annotation?,(simpleType?),87,复杂类型定义,Content: (annotation?,(simplecontent|complexComtent (group|all|choice|sequence)?, (attribute|attributeGroup)*,anyAttribute?),88,组元素,组元素将元素声明组成一个集合;组元素仅仅将元素声明组成一个集合,而不能将属性声明聚集;排序 - all|sequence|choice,89,Group模型 (1/3),Model groups allow you to group a set of element declarations together and use them in multiple places.Model Group with sequence compositor: ,90,Group模型(2/3),Model Group with choice compositor: ,91,Group模型(3/3),Model Group with all compositor: ,92,属性组, 注:属性声明总是在最后,93,内容模型 (1 of 3),SimpleDeclare using and extension or restriction . EmptyDeclare by just writing attributes: ,94,内容模型(2 of 3),Element OnlyDeclare using a model group or compositor ,95,内容模型(3 of 3),MixedAdd mixed=true attribute on complexType element and then declare as wit
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025关于版权行业规范合同
- 2025租赁合同范本简化版
- 2025粳米买卖合同
- 2025年店面租赁合同范本下载
- 胃癌化疗护理常规
- 普通心理学(第2版)课件 第三章 感觉
- 草原生字组词课件
- 义务教育质量监测结果应用主题教育研讨活动英语心得体会模版
- 高中圆锥曲线(椭圆、双曲线、抛物线)规律技巧总结模版
- 2025年HR年度个人工作总结模版
- 宁波东钱湖新城核心区项目整体定位与发展战略课件
- 混凝土随机损伤力学课件
- 基于matlab的同步发电机励磁系统仿真分析与
- 建设工程项目开工备案表
- 危险化学品MSDS(二乙二醇)
- 中国铁建股份公司专业技术职务任职资格评审暂行规定
- 学校食堂餐厅紫外线灯消毒记录表
- (完整版)业务连续性计划BCP
- 《期中考试家长会》PPT课件
- 毕业论文某燃煤锅炉房烟气除尘脱硫系统设计
- 近世代数期末试卷
评论
0/150
提交评论