CHP03-3XMLSchema结构.ppt_第1页
CHP03-3XMLSchema结构.ppt_第2页
CHP03-3XMLSchema结构.ppt_第3页
CHP03-3XMLSchema结构.ppt_第4页
CHP03-3XMLSchema结构.ppt_第5页
已阅读5页,还剩36页未读 继续免费阅读

下载本文档

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

文档简介

1,XML Schema,2,主要内容,内容 了解和掌握使用XML Schema来定义XML文档的结构。,3,XML Schema初体验,XML文档: 张三 26 ,4,XML Schema初体验,DTD: ,5,XML Schema初体验,6,DTD的局限性,没有数据类型的支持。 约束定义能力不足,无法对XML实例文档作出更细致的语义限制 DTD的结构不够结构化,重用的代价相对较高; 不使用XML语法,对类型和名称空间仅提供有限的支持。,7,XML Schema,XML Schema 1.0在2001年5月2日正式成为官方标准。 XML Schema 1.0推荐标准包括三个部分:如下: XML Schema Part 0: Primer 这是对XML Schema的非标准介绍,它提供了大量的示例和说明。 网址:/TR/xmlschema-0/ XML Schema Part 1: Structures 这一部分描述了XML Schema的大部分组件。 网址:/TR/xmlschema-1/ XML Schema Part 2: Datatypes 这一部分包括简单数据类型。它揭示了内置的数据类型和可用于限制它们的面(facet)。这部分是单独的文档,所以其他规范可以使用它,而不需要包含所有的XML Schema。 网址:/TR/xmlschema-2/,8,一些概念,XSDL XML模式定义语言,指在XML中用来创建模式定义的语言,换言之,XSDL是使用元素,如schema和complexType的标记语言。 模式文档和实例文档 术语“模式文档”指用XSDL编写的XML文档,它的根元素是schema元素。这种文档使用“xsd”作为文件的扩展名。模式定义由一个或多个模式文档组成。 符合某个模式的文档称为实例。实例可以根据特定的模式进行验证。 声明和定义 术语“声明”用于指示可能出现在实例中并通过名称来验证的组件,它包括元素、属性和记号。 术语“定义”则用来指示模式内部的组件,如数据类型、模型组、属性组和一致性约束。,9,数据类型,XML Schema把元素和属性的概念与其数据类型分开,这就允许为结构相同的数据使用不同的名称。 在XML Schema中,每个元素和属性都与某种数据类型相关。 XML Schema中的数据类型分为:简单类型和复杂类型。,10,数据类型-简单类型,内置的简单类型 XML Schema推荐标准中内置了44种简单类型,参见XML Schema Part 0: Primer,XML文档片段: 张三 26 模式文档片段: ,11,限制简单类型,新的简单类型可以通过限制其他简单类型而从其派生。使用XML Schema中的应用于简单类型的12个面(facet),你可以指定一个有效的值范围、约束值的长度和精度、枚举一系列有效值、或指定有效值必须匹配的正则表达式。,12,限制简单类型,例如:作为雇员来说,年龄最小为18岁,最大为60岁。,13,列表类型,模式文档 ,14,列表类型,实例文档 北京市 上海市 天津市 重庆市,15,限制列表类型,length、minLength、maxLength这几个长度面都可以用来限制列表类型。该长度用列表中的项数而不是每项的长度来衡量。, 说明实例文档中的emails元素的内容只能有4个以下的列表项。,16,限制列表类型,enumeration面也可以用来限制列表类型。然后,所指定的枚举适用于整个列表,而不是列表中的某一项。, 这个类型定义会有什么问题呢?,17,限制列表类型,修改如下:,18,联合类型,在模式文档中: 在实例文档中: 101 或 张三,19,联合类型,实例文档: 2 或 II,20,联合类型,组成联合类型的简单类型称为它的成员类型。成员类型必须总是简单类型;不存在复杂类型的联合。 联合类型必须至少有一个成员类型,但对于最多可以有多少成员类型则没有限制。,21,限制联合类型,限制联合类型是可能的。在所有面中,只有两种可以应用于联合类型:pattern和enumeration。,22,复杂类型,复杂类型的元素可以有子元素和属性。 复杂类型使用xsd:complexType元素来定义。,23,内容模型,复杂类型的子元素顺序和结构称为它的内容模型。内容模型用模型组、元素声明或引用以及通配符的组合来定义。 模型组共有三种: sequence组要求子元素以指定的顺序出现 choice组允许几个子元素中的任意一个出现 all组要求所有的子元素以任何顺序出现0或1次。 这些组可以嵌套,并可以出现多次,使得你可以创建高级的内容模型。,24,内容模型,employee.xml 张三 25 男 ,25,内容模型,employee.xsd ,26,内容模型,续: ,27,内容模型,在hr根元素下只能有一个employee子元素,我们希望有多个。将: 修改为: minOccus和maxOccus属性的默认值都是1,值“unbounded“表明不限最大的出现数量。如果你仅仅指定了minOccurs属性的值,它必须小于等于maxOccurs的默认值,也就是说minOccurs如果单独出现,其取值只能为0或者1。同样的,如果你只指定了maxOccurs属性,它必须大于等于minOccurs的默认值,也就是必须取值为1或者更 多。,28,内容模型,为了让element元素的number属性必须出现,那么可以将 修改为: ,29,元素和属性的default属性,属性和元素的默认值都是使用default属性来声明,不过该属性在元素和属性上的表现行为略有不同。 当一个属性使用默认值来声明的时候,如果属性在实例文档中出现了,那么属性的值就是属性在实例文档中出现的那个值。如果属性没有在实例文档中出现,模式处理器将认为这个属性的值等于声明中default属性的值。需要注意的是,属性默认值只在属性本身为“可选的“时候才有意义,如果在声明中,即指定了默认值,同时又设置了use属性为除“optional“以外的其他值的话,处理器就会产生错误。 而当一个元素声明中有默认值定义的时候,模式处理器在处理默认的元素值的时候,与处理属性的默认值相比有一些不同。如果实例文档中元素出现且带有自身的内容的时候,元素的值就是实例文档中元素的内容,如果元素没有内容,那么模式处理器就认为这个元素的值(内容)等于声明中default属性的值。然而,如果元素在实例文档中并不出现,模式处理器则根本不认为该元素出现。总而言之,元素和属性默认值之间的区别可以认为是:当属性不出现时默认的属性值被应用,当元素内容为空的时候,默认的元素值被应用。,30,元素和属性的default属性,属性和元素声明中都使用fixed属性来确保属性和元素被设置为特殊的值。 需要注意的是,fixed值的概念和default值的概念是互斥的。所以如果同时声明fixed和 default属性就会令模式处理器产生一个错误。,31,混合内容,如果一个元素即可以包含子元素,也可以包含字符数据,那么可以设置xsd:complexType元素的mixed属性为“true“。,注意到在XML Schema中,混合模型与XML 1.0的混合模型有着根本的区别。在XML Schema下面的混合模型,子元素在一个实例中出现的顺序和数量必须与子元素在模型中说明的顺序和数量一致。与之相对,在XML1.0混合模型下,出现在实例中的子元素的顺序和数量不能被限制。总而言之,XML Schema提供了充分的混合模型的校验,而XML1.0只提供了部分的模式校验。,32,anyType,anyType表示一个称为ur-type的抽象,它是导出所有简单类型和复杂类型的基类型。一个anyType类型不以任何形式约束其包含的内 容。我们可以象使用其他类型一样,使用anyType,如: 用这个方式声明的元素是不受约束的。所以元素的值可以为423.46,也可以为任何其他的字符序列,或者甚至是字符和元素的混合。实际上,anyType是默认类型,所以上面的元素声明可以被重写为: ,33,空内容,某些元素通过属性就可以清楚的表达用途,这样的元素不需要内容,那么我们如何去定义元素内容为空的类型呢?,在这个例子中,empType类型包含的是complexContent,即只包含子元素。complexContent元素表明我们想要限制或者扩展一个复合类型的内容模型,并且类型为anyType的restriction元素声明了两个属性,而没有引入任何元素内容。使用这种方法声明的 employee元素就具有空内容。,34,注解,为了方便其他读者和应用程序来理解模式文档,XML Schema提供了三个元素用来注释:xsd:annoation、xsd:documentation、xsd:appinfo。 可以在xsd:documentation元素中使用xml:lang属性来表示这些注释信息所使用的语言。也可以在schema元素中放置xml:lang属性来指明语言信息。 使用匿名类型声明hr元素 ,35,XML Schema与名称空间,模式文档可以被看作一个类型定义和元素声明的集合(词汇表),他们的名字被归属于一个指定的名称空间,这个名称空间称为目标名称空间。目标名称空间使我们能够从不同的词汇表中区分定义以及声明。 当我们想去检查一个实例文档是否与一个或者多个模式文档相符合(通过一个称为模式校验的处理),我们需要确定在模式定义中声明和定义的哪些元素和属性应该被用来检查在实例文档中的元素和属性。在这个处理流程中,目标名称空间扮演了一个非常重要的角色。 模式文档的作者也有几种可选的方式来影响元素和属性的标识符如何在实例文档中表现。更特别的,通过使用明确的或者默认的名称空间前缀,作者能够决定在实例文档中出现的局部的声明元素和属性是否必须通过一个名称空间的约束验证。,36,名称空间属性一般放置在元素的开始标记处,从属性xmlns开始,后面是前缀。 xmlns:namespace-prefix=“namespace“ 具体示例如下: xmlns:xsd=/2001/XMLSchema xmlns:xs=/2001/XMLSchema 前缀只是起着名称空间的代理的作用,37,在XSDL中使用的名称空间,1.目标名称空间 每一个XSDL模式文档都可以是一个名称空间,这称为它的目标名称空间 ,38,2. XML Schema标准名称空间 其名称空间名称为 /2001/XMLSchema 采用xsd前缀 3. XML Schema实例名称空间 XML Schema实例名称空间是实例中可以出现的四个与模式相 关的属性的独立名称空间 /2001/XMLSchema-instance 一般映射到前缀xsi,39,4. 在模式文档中名称空间声明 为了解析模式文档的引用,模式文档必须包含目标名称空间和XML Schema标准名称空间的声明。 另一种方法是把前缀映射到目标名称空间,并使XML Schema标准名称空间成为

温馨提示

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

评论

0/150

提交评论