第四章-XML-schema-《XML编程原理与实例教程》电子教案课件_第1页
第四章-XML-schema-《XML编程原理与实例教程》电子教案课件_第2页
第四章-XML-schema-《XML编程原理与实例教程》电子教案课件_第3页
第四章-XML-schema-《XML编程原理与实例教程》电子教案课件_第4页
第四章-XML-schema-《XML编程原理与实例教程》电子教案课件_第5页
已阅读5页,还剩93页未读 继续免费阅读

下载本文档

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

文档简介

第四章XMLschema第四章XMLschema14.1XMLschema简介Schema是一种与DTD类似的,同样用于定义在各种XML文档中使用标记的规范的一个工具。从功能上来讲,Schema与DTD是等效的,但是前者比后者更具灵活性,由于DTD使用了一种特殊的规范来定义使用XML标记的规范,有许多常用的限制不能用DTD来表述,人们开始寻求另外的解决方法,微软发展了一套不同于DTD方法来定义XML数据类型,这个方法成为了现今的W3C定义的Schema的原型。4.1XMLschema简介Schema是一种与DTD类24.2XMLSchema与DTD的比较

Schema具有如下优点:一致性:Schema使得对XML的定义不必再利用一种特定的形式化的语言,而是直接借助XML自身的特性,利用XML的基本语法规则来定义XML文档的结构,使得XML达到了从内到外的统一,也为XML的进一步发展奠定了坚实的基础。扩展性:Schema对DTD进行了扩充,引入了数据类型、命名空间,从而使其具备较强的可扩展性。互换性:利用Schema,我们能够书写XML文档以及验证文档的合法性。另外,通过特定的映射机制,还可以将不同的Schema进行转换,以实现更高层次的数据交换。规范性:同DTD一样,Schema也提供了一套完整的机制以约束XML文档中置标的使用,但相比之下,后者基于XML,更具有规范性。Schema利用元素的内容和属性来定义XML文档的整体结构,如哪些元素可以出现在文档中、元素间的关系是什么、每个元素有哪些内容和属性以及元素出现的顺序和次数等等,都可一目了然。4.2XMLSchema与DTD的比较

Schema具34.3XML元素声明

4.3.1根元素 4.3.2简单元素 4.3.3复杂元素 4.3.4特殊元素 4.3.5元素组 4.3.6元素限制 4.3.7全局元素与局部元素 4.3.8any元素4.3XML元素声明

4.3.1根元素44.3.1根元素

每一个schema文档都必须拥有一个根元素——schema元素,并且这个根元素也是唯一的。Schema文档其他所有的元素及其属性声明和数据类型定义都必须嵌套在根元素中。4.3.1根元素

每一个schema文档都必须拥有一个根54.3.2简单元素

简单元素是指不包含子元素和属性的元素。是一种简单数据类型的元素。简单元素的数据类型既可以是内建数据类型,也可以是用户派生的简单类型。4.3.2简单元素

简单元素是指不包含子元素和属性的元素64.3.2简单元素

声明一个简单元素的具体的语法格式如下:<xsd:elementname=”element-name”type=”data-type”/><xsd:simpleTypename=”data-type”…</xsd:simpleType>4.3.2简单元素

声明一个简单元素的具体的语法格式如下74.3.3复杂元素

包含子元素的元素就是复杂元素,对应的,它属于复杂数据类型。声明一个复杂元素的语法规则是:<xsd:elementname=”element-name”type=”data-type”/><xsd:complexTypename=”data-type”><xsd:sequence><xsd:elementname=”child1”/><xsd:elementname=”child2”/>…</xsd:sequence></xsd:complexType>4.3.3复杂元素

包含子元素的元素就是复杂元素,对应的84.3.4特殊元素

1.空元素 空元素就是元素内容为空值的元素,它也不包含子元素。有两种表示空值的方法:使用属性nillable=”true”或者使用属性minOccurs=”0”。2.ANY类型的元素 一个anyType类型不以任何形式约束其包含的内容,我们可以象使用其他类型一样使用anyType。声明一个元素为anyType类型的语法是:

<xsd:elementname=”element-name”type=”xsd:anyType”>

4.3.4特殊元素

1.空元素94.3.4特殊元素3.混合内容元素如果一个元素,它既需要包含子元素,又需要包含字符数据,那么它就必须作为一个混合内容形式的元素。具体的语法格式如下:<xsd:elementname=”element-name”><xsd:complexTypemixed=”true”><xsd:sequence>…</xsd:sequence></xsd:complexType></xsd:element>4.3.4特殊元素3.混合内容元素104.3.4特殊元素4.选择型元素如果一个元素只能在有限的几个子元素中选择一个子元素作为元素内容,那么需要将它声明为选择型的元素,选择型元素也是复杂类型元素。具体的格式如下:<xsd:elementname=”element-name”><xsd:complexType><xsd:choice><xsd:elementname=”child1”type=”data-type”/><xsd:elementname=”child2”type=”data-type”/>…</xsd:choice></xsd:complexType></xsd:element>4.3.4特殊元素4.选择型元素114.3.5元素组

在一个元素的多个子元素中,有时候几个子元素之间存在一些逻辑上的联系,比如我们描述地址时,门牌号、街道和城市这几个元素就存在联系,这时候如果将它们分为一组也是较为合适的。基于这种需要,因此XML提供了一个声明若干个元素为一组的机制,这就是元素组。4.3.5元素组

在一个元素的多个子元素中,有时候几个子124.3.5元素组

具体的格式如下:<xsd:groupname=”group-name”><xsd:sequence><xsd:elementname=”element1”type=”date-type”/><xsd:elementname=”element2”type=”date-type”/>… </xsd:sequence></xsd:group>4.3.5元素组

具体的格式如下:134.3.6元素限制

可以通过指定元素的minOccurs和maxOccurs属性来限制元素的出现次数。当需要指定元素的默认值时,就需要使用到元素的default属性和fixed属性。使用sequence关键字的意思就是规定子元素在xml文档中的出现顺序是顺序出现的——与schema文件中声明的顺序一致。all,这种方式使得序列中的元素可以按照任意的顺序出现,但是这些元素每个最多只能出现一次。choice,这一种也即是前面介绍过的选择型元素,它起到的作用就是在若干个给定的子元素中选择一个出现在XML文档中,注意只能选择一个,不能选多个,也不能选择不在给定范围内的子元素。4.3.6元素限制

可以通过指定元素的minOccurs144.3.7全局元素与局部元素

在schema文件中,schema根元素的直接子元素就是全局元素。局部元素就是它的父元素不是schema根元素的元素。4.3.7全局元素与局部元素

在schema文件中,sc154.3.8any元素

XML存在一个较为特殊的元素,那就是any元素,在复杂类型内使用any元素意味着任何元素都可以出现在那个位置上,这可有效地使它成为事先无法预知的内容的占位符。4.3.8any元素

XML存在一个较为特殊的元素,那就164.3.8any元素

使用any元素时,也可以通过指定它的名称空间属性namespace来指明any元素的详细情况,namespace有四种取值,分别为:##any: 来自任何命名空间的任何元素##local:任何非限定元素(不属于命名空间)##other:非targetNamespace命名空间中的任何元素##targetNamespace:targetNamespace中的任何元素4.3.8any元素

使用any元素时,也可以通过指定它174.4XMLschema属性声明

4.4.1声明属性 4.4.2属性引用4.4.3属性组4.4.4any类型属性4.4.5属性限制4.4XMLschema属性声明

4.4.1声明属184.4.1声明属性

使用attribute关键字来声明一个属性。与元素不同,属性都需要是简单的数据类型。声明属性的语法如下:<xsd:attributename=”attribute-name”type=”simple-type”/>4.4.1声明属性

使用attribute关键字来声明一194.4.2属性引用

属性也存在引用,可以引用已声明的属性来作为自己元素的属性。声明一个属性引用使用的关键字也是ref,具体的格式如下:<xsd:attributeref=”ref-of-attribute”/>注意引用的属性一定要有声明,不能引用不存在的属性。4.4.2属性引用

属性也存在引用,可以引用已声明的属性204.4.3属性组

属性也可以声明成一组属性组。声明属性组使用的关键字是:attributeGroup,具体的格式请看下面:<xsd:attributeGroupname=”attributeGroup-name”><xsd:attributename=”attribute1”…/><xsd:attributename=”attribute2”…/> …</xsd:attributeGroup>属性组有助于XML文档结构的模块化,允许在一处声明常用的属性集合,然后在一个或多个文档中引用。4.4.3属性组

属性也可以声明成一组属性组。声明属性组214.4.4any类型属性

属性也有一个用声明任意属性类型的方法,这就是使用anyAttribute关键字进行属性声明。声明为any类型的属性也就具备了占位符的功能,在XML文档实例中它允许将这种类型的属性替换成任意类型的属性。它也提供名称空间属性,相应的属性值取值也是分别为:##any: 来自任何命名空间的任何元素##local:任何非限定元素(不属于命名空间)##other:非targetNamespace命名空间中的任何元素##targetNamespace:targetNamespace中的任何元素4.4.4any类型属性

属性也有一个用声明任意属性类型224.4.5属性限制

关键字use来对属性的出现做出限制。use的值可以为:required、optional和prohibited三种,相应的意思分别为必须出现、选择出现和禁止出现4.4.5属性限制

关键字use来对属性的出现做出限制。234.4.5属性限制default和fixed两个值用于规定属性的内容。default规定属性的默认值,而fixed规定属性的内容一定要是fixed指定的值。并且当一个属性指定了default值的话,那么如果需要指定use的值,就一定要选择optional。4.4.5属性限制default和fixed两个值用于规244.5注释

XMLSchema提供三个元素用于注释,以提高代码的可读性,并且也可以为其它应用程序提供一定的辅助信息。三个元素分别是:annotation、documentation和appinfo,其中documentation和appinfo是annotation的子元素。4.5注释

XMLSchema提供三个元素用于注释,以254.6XMLSchema数据类型

4.6.1原始数据类型 4.6.2派生数据类型 4.6.3用户派生数据类 4.6.4约束面4.6XMLSchema数据类型

4.6.1原始数264.6.1原始数据类型

19种原始数据类型中可以分成几个大类,分别是:程序设计数据类型XML数据类型二进制数据类型时间数据类型。4.6.1原始数据类型

19种原始数据类型中可以分成几个274.6.1原始数据类型1.程序设计数据类型在大部分的程序设计语言或者数据库系统中都会有一些常见的数据类型,这几类就是string、boolean、decimal、float和double类型。2.XML数据类型共有三种数据类型属于XMl数据类型,分别是anyURI、QName和NOTATION。4.6.1原始数据类型1.程序设计数据类型284.6.1原始数据类型3.二进制数据类型表示二进制数据类型的有两种,hexBinary和base64Binary。4.6.1原始数据类型3.二进制数据类型294.6.1原始数据类型4.时间类型有9种原始数据类型用于时间的表示:第一种是表示持续时间,对应的数据类型是duration,它基于ISO8601数据格式标准,表示时间的长度,如1个小时,3分钟等等。第二种表示一个时间或者日期,是一个时间点,相应的数据类型有date、time和dateTime。第三种表示循环的日期或者时间,分别是gDay、gMonth、gMonthDay、gYear和gYearMonth。4.6.1原始数据类型4.时间类型304.6.2派生数据类型

XMLSchema定义了25种派生数据类型,它们都是在原始数据类型的基础上定义的,此外XMLSchema也允许用户定义自己的派生数据类型。4.6.2派生数据类型

XMLSchema定义了25种314.6.2派生数据类型

XMLSchema定义的派生数据类型可以分为几组:第一组是整型数,它包括如下几种数据类型:integer:十进制整型数;positiveInteger:正的整数;negativeInteger:负的整数;nonPositiveInteger:非正整数;nonNegativeInteger:非负整数。4.6.2派生数据类型

XMLSchema定义的派生数324.6.2派生数据类型

第二组是与计算机字长成倍数关系的一组数据类型:byte:8位带符号数(-128~127之间);unsignedByte:8位无符号数(0~255之间);short:16位短整型数(-32768~32767之间);unsignedShot:16位无符号短整型数(0~65535之间);int:32位整型数(-2147483648~2147483647之间);unsignedInt:无符号32位整型数(0~4294967295之间);long:64位整型数(-9223372036854775808~9223372036854775807之间);unsignedLong:64位无符号整型数(0~18446744073709551615之间)。4.6.2派生数据类型

第二组是与计算机字长成倍数关系的334.6.2派生数据类型

第三组是基于XML属性类型构成的一组数据类型:ID:文档中单个元素唯一的标示符;IDREF文档中对一个元素ID的引用;IDREFS:文档中对多个个元素ID的引用,每个ID之间使用空格进行分隔;ENTITY:文档非解析实体名称;ENTITIES:文档多个非解析实体名称,每个名称之间使用空格分隔;NMTOKEN:带有特定约束的字符串。NMTOKENS:多个带有特定约束的字符串,每个名称之间使用空格分隔。4.6.2派生数据类型

第三组是基于XML属性类型构成的344.6.2派生数据类型

第四组是XML的一类数据类型:Name:以字母或者下划线和冒号开始,后继字符包括数字、字母、下划线、连字符和句点的字符串类型。NCName:以字母或者下划线开始,后继字符包括数字、字母、下划线、连字符和句点的字符串类型。normalizedString:将字符串中的回车或者制表符之类的空白符变为由空格代替的字符串类型。token:将字符串中多个相邻空白压缩为一个空白符,并且去除前导和末尾空格后变成的新的字符串类型。4.6.2派生数据类型

第四组是XML的一类数据类型:354.6.3用户派生数据类型

利用XMLSchema已有的数据类型——原始数据类型和派生数据类型,来派生出自己需要的数据类型。4.6.3用户派生数据类型

利用XMLSchema已有364.6.3用户派生数据类型

1.简单数据类型(simpleType)简单数据类型只能包含字符数据,不能包含子元素,也不能包含属性。派生简单数据类型主要通过三个方面来实现。列表(list)派生联合派生限制派生4.6.3用户派生数据类型

1.简单数据类型(simpl374.6.3用户派生数据类型2.复杂数据类型(complexType)复杂数据类型是一类可以包含若干子元素和属性的一类数据类型,内建数据类型是不包含复杂数据类型的,复杂数据类型是需要用户自己进行派生而获得的,复杂数据类型也可以通过对已有的简单数据类型或者复杂数据类型进行扩充和限制而获得。4.6.3用户派生数据类型2.复杂数据类型(comple384.6.3用户派生数据类型2.复杂数据类型(complexType)复杂类型的派生方法,那就是通过如下格式:<xsd:complexTypename=”type-name”><xsd:elementname=”element1”type=”data-type”/><xsd:elementname=”element2”type=”data-type”/>…<xsd:attributename=”attribute1”type=”data-type”/><xsd:attributename=”attribute2”type=”data-type”/>…</xsd:complextype>除此之外,还有通过扩充或者限制已有的简单或者复杂数据类型的方法

4.6.3用户派生数据类型2.复杂数据类型(comple394.6.4约束面

对于restriction派生方法,有12个约束面辅助进行派生限制,这12种约束可以分成5个类别:范围限制枚举限制处理空白限制十进制数字限制模式限制4.6.4约束面

对于restriction派生方法,有404.6.4约束面1.范围限制有7个约束面是作用于范围的,他们分别是:minInclusive、maxInclusive、minExclusive、maxExclusive、minLength、maxLength和length。4.6.4约束面1.范围限制414.6.4约束面2.枚举限制枚举限制就是针对一个基础数据类型限定一列允许值而派生出新的数据类型。新的数据类型的值域就只能是这一列允许值,不在这一列值中出现的取值都不属于这个新的数据类型。4.6.4约束面2.枚举限制424.6.4约束面3.处理空白限制对于文档中的空白,约束面是whiteSpace,它有三种取值方式来约束空白的处理方法,分别是:collapse、preserve和replace。collapse规定将一个空白序列压缩成单个空格并且去掉序列的前导和结尾空白;preserv规定忽略空白,不对其进行处理;而replace则规定将所有形式的空白如制表符、换行符、回车符等都转变成空格符。4.6.4约束面3.处理空白限制434.6.4约束面4.十进制数字限制对于十进制数,有两个约束面用来限制它们:totalDigits和fractionDigits。totalDigits限制一个十进制数的最大位数,fractionDigits约束十进制数的小数部分的最大位数。4.6.4约束面4.十进制数字限制444.6.4约束面5.模式约束模式约束是所有约束中最复杂的一类约束,一般都是通过正则表达式来描述模式约束。4.6.4约束面5.模式约束454.7import与include

4.7.1import 4.7.2include4.7import与include

4.7.1imp464.7.1import

Schema的import元素用于将元素声明、简单或者复杂类型定义等模式结构信息从外部模式导入当前模式文件中。必须注意的是如果使用名称空间,则外部模式的目标名称空间应该与当前导入模式文档的名称空间相同。外部模式文件也可以不使用名称空间。4.7.1import

Schema的import元素用474.7.2include

include元素用于将元素声明、简单和复杂数据类型定义等模式结构从外部模式文档导入include模式文档中,并且外部模式文件所在的名称空间必须与当前导入的模式文件保持匹配,否则必须使用空名称空间。4.7.2include

include元素用于将元素声484.8小结

本章主要介绍Schema的相关内容,Schema可用于对各种XML文档进行类型说明,它提供一套完整的机制来约束XML文档的结构。Schema本身就是使用XML进行定义,与XML文档保持了一致性,同时Schema具备了良好的扩展性。首先介绍了如何声明XML元素,包括一般的简单元素、复杂元素、特殊元素和元素组的声明方法以及如何对元素进行限制。描述了全局元素与局部元素的关系。接着介绍了属性声明的一般方法、属性引用和属性组以及对属性进行限制的方法。也介绍了Schema进行注释的方式。最后一部分介绍了Schema的数据类型,XMLSchema中共定义了44种数据类型,其中19种是原始数据类型,用户不能创建原始数据类型。另外的25种是基于这19种原始数据类型派生的,属于派生数据类型。派生数据类型就是根据一个或者多个现有的数据类型进行限制或扩展。用户也可以定义自己的派生数据类型。所有44种数据类型都属于内建数据类型。4.8小结

本章主要介绍Schema的相关内容,Sche49第四章XMLschema第四章XMLschema504.1XMLschema简介Schema是一种与DTD类似的,同样用于定义在各种XML文档中使用标记的规范的一个工具。从功能上来讲,Schema与DTD是等效的,但是前者比后者更具灵活性,由于DTD使用了一种特殊的规范来定义使用XML标记的规范,有许多常用的限制不能用DTD来表述,人们开始寻求另外的解决方法,微软发展了一套不同于DTD方法来定义XML数据类型,这个方法成为了现今的W3C定义的Schema的原型。4.1XMLschema简介Schema是一种与DTD类514.2XMLSchema与DTD的比较

Schema具有如下优点:一致性:Schema使得对XML的定义不必再利用一种特定的形式化的语言,而是直接借助XML自身的特性,利用XML的基本语法规则来定义XML文档的结构,使得XML达到了从内到外的统一,也为XML的进一步发展奠定了坚实的基础。扩展性:Schema对DTD进行了扩充,引入了数据类型、命名空间,从而使其具备较强的可扩展性。互换性:利用Schema,我们能够书写XML文档以及验证文档的合法性。另外,通过特定的映射机制,还可以将不同的Schema进行转换,以实现更高层次的数据交换。规范性:同DTD一样,Schema也提供了一套完整的机制以约束XML文档中置标的使用,但相比之下,后者基于XML,更具有规范性。Schema利用元素的内容和属性来定义XML文档的整体结构,如哪些元素可以出现在文档中、元素间的关系是什么、每个元素有哪些内容和属性以及元素出现的顺序和次数等等,都可一目了然。4.2XMLSchema与DTD的比较

Schema具524.3XML元素声明

4.3.1根元素 4.3.2简单元素 4.3.3复杂元素 4.3.4特殊元素 4.3.5元素组 4.3.6元素限制 4.3.7全局元素与局部元素 4.3.8any元素4.3XML元素声明

4.3.1根元素534.3.1根元素

每一个schema文档都必须拥有一个根元素——schema元素,并且这个根元素也是唯一的。Schema文档其他所有的元素及其属性声明和数据类型定义都必须嵌套在根元素中。4.3.1根元素

每一个schema文档都必须拥有一个根544.3.2简单元素

简单元素是指不包含子元素和属性的元素。是一种简单数据类型的元素。简单元素的数据类型既可以是内建数据类型,也可以是用户派生的简单类型。4.3.2简单元素

简单元素是指不包含子元素和属性的元素554.3.2简单元素

声明一个简单元素的具体的语法格式如下:<xsd:elementname=”element-name”type=”data-type”/><xsd:simpleTypename=”data-type”…</xsd:simpleType>4.3.2简单元素

声明一个简单元素的具体的语法格式如下564.3.3复杂元素

包含子元素的元素就是复杂元素,对应的,它属于复杂数据类型。声明一个复杂元素的语法规则是:<xsd:elementname=”element-name”type=”data-type”/><xsd:complexTypename=”data-type”><xsd:sequence><xsd:elementname=”child1”/><xsd:elementname=”child2”/>…</xsd:sequence></xsd:complexType>4.3.3复杂元素

包含子元素的元素就是复杂元素,对应的574.3.4特殊元素

1.空元素 空元素就是元素内容为空值的元素,它也不包含子元素。有两种表示空值的方法:使用属性nillable=”true”或者使用属性minOccurs=”0”。2.ANY类型的元素 一个anyType类型不以任何形式约束其包含的内容,我们可以象使用其他类型一样使用anyType。声明一个元素为anyType类型的语法是:

<xsd:elementname=”element-name”type=”xsd:anyType”>

4.3.4特殊元素

1.空元素584.3.4特殊元素3.混合内容元素如果一个元素,它既需要包含子元素,又需要包含字符数据,那么它就必须作为一个混合内容形式的元素。具体的语法格式如下:<xsd:elementname=”element-name”><xsd:complexTypemixed=”true”><xsd:sequence>…</xsd:sequence></xsd:complexType></xsd:element>4.3.4特殊元素3.混合内容元素594.3.4特殊元素4.选择型元素如果一个元素只能在有限的几个子元素中选择一个子元素作为元素内容,那么需要将它声明为选择型的元素,选择型元素也是复杂类型元素。具体的格式如下:<xsd:elementname=”element-name”><xsd:complexType><xsd:choice><xsd:elementname=”child1”type=”data-type”/><xsd:elementname=”child2”type=”data-type”/>…</xsd:choice></xsd:complexType></xsd:element>4.3.4特殊元素4.选择型元素604.3.5元素组

在一个元素的多个子元素中,有时候几个子元素之间存在一些逻辑上的联系,比如我们描述地址时,门牌号、街道和城市这几个元素就存在联系,这时候如果将它们分为一组也是较为合适的。基于这种需要,因此XML提供了一个声明若干个元素为一组的机制,这就是元素组。4.3.5元素组

在一个元素的多个子元素中,有时候几个子614.3.5元素组

具体的格式如下:<xsd:groupname=”group-name”><xsd:sequence><xsd:elementname=”element1”type=”date-type”/><xsd:elementname=”element2”type=”date-type”/>… </xsd:sequence></xsd:group>4.3.5元素组

具体的格式如下:624.3.6元素限制

可以通过指定元素的minOccurs和maxOccurs属性来限制元素的出现次数。当需要指定元素的默认值时,就需要使用到元素的default属性和fixed属性。使用sequence关键字的意思就是规定子元素在xml文档中的出现顺序是顺序出现的——与schema文件中声明的顺序一致。all,这种方式使得序列中的元素可以按照任意的顺序出现,但是这些元素每个最多只能出现一次。choice,这一种也即是前面介绍过的选择型元素,它起到的作用就是在若干个给定的子元素中选择一个出现在XML文档中,注意只能选择一个,不能选多个,也不能选择不在给定范围内的子元素。4.3.6元素限制

可以通过指定元素的minOccurs634.3.7全局元素与局部元素

在schema文件中,schema根元素的直接子元素就是全局元素。局部元素就是它的父元素不是schema根元素的元素。4.3.7全局元素与局部元素

在schema文件中,sc644.3.8any元素

XML存在一个较为特殊的元素,那就是any元素,在复杂类型内使用any元素意味着任何元素都可以出现在那个位置上,这可有效地使它成为事先无法预知的内容的占位符。4.3.8any元素

XML存在一个较为特殊的元素,那就654.3.8any元素

使用any元素时,也可以通过指定它的名称空间属性namespace来指明any元素的详细情况,namespace有四种取值,分别为:##any: 来自任何命名空间的任何元素##local:任何非限定元素(不属于命名空间)##other:非targetNamespace命名空间中的任何元素##targetNamespace:targetNamespace中的任何元素4.3.8any元素

使用any元素时,也可以通过指定它664.4XMLschema属性声明

4.4.1声明属性 4.4.2属性引用4.4.3属性组4.4.4any类型属性4.4.5属性限制4.4XMLschema属性声明

4.4.1声明属674.4.1声明属性

使用attribute关键字来声明一个属性。与元素不同,属性都需要是简单的数据类型。声明属性的语法如下:<xsd:attributename=”attribute-name”type=”simple-type”/>4.4.1声明属性

使用attribute关键字来声明一684.4.2属性引用

属性也存在引用,可以引用已声明的属性来作为自己元素的属性。声明一个属性引用使用的关键字也是ref,具体的格式如下:<xsd:attributeref=”ref-of-attribute”/>注意引用的属性一定要有声明,不能引用不存在的属性。4.4.2属性引用

属性也存在引用,可以引用已声明的属性694.4.3属性组

属性也可以声明成一组属性组。声明属性组使用的关键字是:attributeGroup,具体的格式请看下面:<xsd:attributeGroupname=”attributeGroup-name”><xsd:attributename=”attribute1”…/><xsd:attributename=”attribute2”…/> …</xsd:attributeGroup>属性组有助于XML文档结构的模块化,允许在一处声明常用的属性集合,然后在一个或多个文档中引用。4.4.3属性组

属性也可以声明成一组属性组。声明属性组704.4.4any类型属性

属性也有一个用声明任意属性类型的方法,这就是使用anyAttribute关键字进行属性声明。声明为any类型的属性也就具备了占位符的功能,在XML文档实例中它允许将这种类型的属性替换成任意类型的属性。它也提供名称空间属性,相应的属性值取值也是分别为:##any: 来自任何命名空间的任何元素##local:任何非限定元素(不属于命名空间)##other:非targetNamespace命名空间中的任何元素##targetNamespace:targetNamespace中的任何元素4.4.4any类型属性

属性也有一个用声明任意属性类型714.4.5属性限制

关键字use来对属性的出现做出限制。use的值可以为:required、optional和prohibited三种,相应的意思分别为必须出现、选择出现和禁止出现4.4.5属性限制

关键字use来对属性的出现做出限制。724.4.5属性限制default和fixed两个值用于规定属性的内容。default规定属性的默认值,而fixed规定属性的内容一定要是fixed指定的值。并且当一个属性指定了default值的话,那么如果需要指定use的值,就一定要选择optional。4.4.5属性限制default和fixed两个值用于规734.5注释

XMLSchema提供三个元素用于注释,以提高代码的可读性,并且也可以为其它应用程序提供一定的辅助信息。三个元素分别是:annotation、documentation和appinfo,其中documentation和appinfo是annotation的子元素。4.5注释

XMLSchema提供三个元素用于注释,以744.6XMLSchema数据类型

4.6.1原始数据类型 4.6.2派生数据类型 4.6.3用户派生数据类 4.6.4约束面4.6XMLSchema数据类型

4.6.1原始数754.6.1原始数据类型

19种原始数据类型中可以分成几个大类,分别是:程序设计数据类型XML数据类型二进制数据类型时间数据类型。4.6.1原始数据类型

19种原始数据类型中可以分成几个764.6.1原始数据类型1.程序设计数据类型在大部分的程序设计语言或者数据库系统中都会有一些常见的数据类型,这几类就是string、boolean、decimal、float和double类型。2.XML数据类型共有三种数据类型属于XMl数据类型,分别是anyURI、QName和NOTATION。4.6.1原始数据类型1.程序设计数据类型774.6.1原始数据类型3.二进制数据类型表示二进制数据类型的有两种,hexBinary和base64Binary。4.6.1原始数据类型3.二进制数据类型784.6.1原始数据类型4.时间类型有9种原始数据类型用于时间的表示:第一种是表示持续时间,对应的数据类型是duration,它基于ISO8601数据格式标准,表示时间的长度,如1个小时,3分钟等等。第二种表示一个时间或者日期,是一个时间点,相应的数据类型有date、time和dateTime。第三种表示循环的日期或者时间,分别是gDay、gMonth、gMonthDay、gYear和gYearMonth。4.6.1原始数据类型4.时间类型794.6.2派生数据类型

XMLSchema定义了25种派生数据类型,它们都是在原始数据类型的基础上定义的,此外XMLSchema也允许用户定义自己的派生数据类型。4.6.2派生数据类型

XMLSchema定义了25种804.6.2派生数据类型

XMLSchema定义的派生数据类型可以分为几组:第一组是整型数,它包括如下几种数据类型:integer:十进制整型数;positiveInteger:正的整数;negativeInteger:负的整数;nonPositiveInteger:非正整数;nonNegativeInteger:非负整数。4.6.2派生数据类型

XMLSchema定义的派生数814.6.2派生数据类型

第二组是与计算机字长成倍数关系的一组数据类型:byte:8位带符号数(-128~127之间);unsignedByte:8位无符号数(0~255之间);short:16位短整型数(-32768~32767之间);unsignedShot:16位无符号短整型数(0~65535之间);int:32位整型数(-2147483648~2147483647之间);unsignedInt:无符号32位整型数(0~4294967295之间);long:64位整型数(-9223372036854775808~9223372036854775807之间);unsignedLong:64位无符号整型数(0~18446744073709551615之间)。4.6.2派生数据类型

第二组是与计算机字长成倍数关系的824.6.2派生数据类型

第三组是基于XML属性类型构成的一组数据类型:ID:文档中单个元素唯一的标示符;IDREF文档中对一个元素ID的引用;IDREFS:文档中对多个个元素ID的引用,每个ID之间使用空格进行分隔;ENTITY:文档非解析实体名称;ENTITIES:文档多个非解析实体名称,每个名称之间使用空格分隔;NMTOKEN:带有特定约束的字符串。NMTOKENS:多个带有特定约束的字符串,每个名称之间使用空格分隔。4.6.2派生数据类型

第三组是基于XML属性类型构成的834.6.2派生数据类型

第四组是XML的一类数据类型:Name:以字母或者下划线和冒号开始,后继字符包括数字、字母、下划线、连字符和句点的字符串类型。NCName:以字母或者下划线开始,后继字符包括数字、字母、下划线、连字符和句点的字符串类型。normalizedString:将字符串中的回车或者制表符之类的空白符变为由空格代替的字符串类型。token:将字符串中多个相邻空白压缩为一个空白符,并且去除前导和末尾空格后变成的新的字符串类型。4.6.2派生数据类型

第四组是XML的一类数据类型:844.6.3用户派生数据类型

利用XMLSchema已有的数据类型——原始数据类型和派生数据类型,来派生出自己需要的数据类型。4.6.3用户派生数据类型

利用XMLSchema已有854.6.3用户派生数据类型

1.简单数据类型(simpleType)简单数据类型只能包含字符数据,不能包含子元素,也不能包含属性。派生简单数据类型主要通过三个方面来实现。列表(list)派生联合派生限制派生4.6.3用户派生数据类型

1.简单数据类型(simpl864.6.3用户派生数据类型2.复杂数据类型(complexType)复杂数据类型是一类可以包含若干子元素和属性的一类数据类型,内建数据类型是不包含复杂数据类型的,复杂数据类型是需要用户自己进行派生而获得的,复杂数据类型也可以通过对已有的简单数据类型或者复杂数据类型进行扩充和限制而获得。4.6.3用户派生数据类型2.复杂数据类型(comple874.6.3用户派生数据类型2.复杂数据类型(complexType)复杂类型的派生方法,那就是通过如下格式:<xsd:complexTypename=”type-name”><xsd:elementname=”element1”type=”data-type”/><xsd:ele

温馨提示

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

评论

0/150

提交评论