




已阅读5页,还剩23页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
Top of FormW3C XML Schema 教程 XML SCHEMA教程本教程是笔者学习W3C的XML Schema Tutorial的笔记。如果你对原教程感兴趣,可以浏览/schema/default.asp。XML Schema是W3C制定的基于XML格式的XML文档结构描述标准。作为一种文档描述语言,通常我们将其简写为XSD(XML Schema Define)。XSD作为DTD(文档类型定义)的替代者,已经广泛地应用到各种商业应用。使用XSD,我们不仅可以描述XML文档的结构以便颁布业务标准,而且可以使用支持XSD的通用化XML解析器对XML文档进行解析并自动地检查其是否满足给定的业务标准。应用XSD校验XML文档的结构后,我们不仅验证了XML文档的有效性(Well-Formed Document),还验证了XML文档的合法性,甚至验证了XML文档各域的值合法性(数据类型与编码值),而且这些验证工作不必我们编写任何代码,只需使用支持XSD的通用化XML文档解析器即可完成。这就给应用软件带来了巨大的灵活性,以前需要借助数据库或配置文件才能完成的参数化管理,现在只需按照新的业务需求发布新的XML Schema即可。作为一个入门,下面列出一个XML文档及其XSD文档,使我们对XSD有个简单的认识:XML:ToveJaniReminderDont forget me this weekend!XSD: (1) (3) (4) (5) (6) (7) (8) (9) 说明如下:(1) XML文档定义,描述本文档使用的XML标准版本及文档编码标准。(2)l 是所有XSD文档的根元素,其属性描述文档的名空间及文档引用;l xmlns:xs=/2001/XMLSchema 指示使用xs:作前缀的元素、属性、类型等名称是属于/2001/XMLSchema名空间的。l targetNamespace= 指示本文档定义的元素、属性、类型等名称属于名空间;l xmlns= 指示缺省的名空间是http:/www. ,即没有前缀的元素、属性、类型等名称是属于该名空间的。l elementFormDefault=qualified 指示使用本XSD定义的XML文档所使用的元素必须在本文档中定义且使用名空间前缀。(3) 定义一个元素,该元素的名称是note,即XML中的;(4) 元素的类型是复杂类型,具体格式由子元素定义;(5) 元素的子元素必须按顺序出现。具体的顺序由子元素的定义顺序决定;(6) 定义一个元素,其类型是string,且其是的第1个子元素;(7) 定义一个元素,其类型是string,且其是的第2个子元素;(8) 定义一个元素,其类型是string,且其是的第3个子元素;(9) 定义一个元素,其类型是string,且其是的第4个子元素;上面的说明可以看出我们描述的XML文档应满足这些要求:根元素是;可以包含四个子元素,分别是、,且必须按、的顺序出现;四个子元素都是string类型的。1 格式良好文档满足下列要求的XML文档,称为格式良好的文档(Well-Formed Document):(1) 使用XML定义打头,如:;(2) 文档仅包含一个唯一的根元素;(3) 起始标记()必须与结束标记()匹配;(4) 大小写敏感;(5) 所有元素是闭合的(配套);(6) 所有元素嵌套是正确的;(7) 所有属性使用或括;(8) entities must be used for special characters。应注意到,满足上述要求的文档只能算是有效的文档,但不能算是合法的文档。例如,业务标准要求文档中必须包含5个元素,如果文档中仅包含了4个,它仍是格式良好的文档,但不满足业务标准要求,是一个非法的文档。2 XSD应用的场合(1) 定义文档中可以出现的元素;(2) 定义文档中可以出现的属性;(3) 定义元素包含哪些子元素;(4) 定义元素出现的顺序;(5) 定义元素出现的次数;(6) 定义哪些元素是空或可以包含text;(7) 定义元素与属性的数据类型;(8) 定义元素与属性的缺省值或固定值或值范围、值列表。3 XSD相对于 DTD的优势(1)XSD支持数据类型;l 易于描述许可的文档组成;l 易于校验数据的合法性;l 易于使用数据库中的数据;l 易于定义数据的约束;l 易于定义数据的模式;l 易于在不同数据类型间进行格式转换(2)XSD使用XML语法;(3)XSD使数据交换更安全,因为它描述了数据的格式,避免了歧义;(4)XSD可以扩展,支持类型的扩展和结构的扩展。4 文档引用XSD支持名空间(NameSpace)和文档引用。通过名空间,可以避免文档引用中可能导致的名称重复问题。W3C规定XSD的名空间使用URI作为名称。以前面的XML为例:l xmlns= 指示本文档缺省的名空间,即没有前缀的所有的元素应在该空间中定义;l xmlns:xsi=/2001/XMLSchema-instance 指示本文档要引用/2001/XMLSchema-instance名空间定义的名称,其前缀是xsi;l xsi:schemaLocation= note.xsd 指示本文档要引用的 名空间的XSD文档是note.xsd。如果要引用多个名空间的XSD文档,则使用空格分隔多个Namespace xsd对。例如: a.xsd b.xsd.。如果XSD文档没有使用名空间,则使用xsi:noNamespaceSchemaLocation=note.xsd代替xsi:schemaLocation。5 简单元素描述简单元素指只包含text的XML元素,它没有任何子元素或属性,如:男。简单元素可以附加地定义其缺省值或固定值。XSD定义简单元素的格式是:。其中ttt使用XSD标准定义的基本类型,即:xs:string、xs:decimal、xs:integer、xs:boolean、xs:date、 xs:time等。例如:。使用上述方式定义的简单元素只能限定元素的数据类型、缺省值、固定值。如果希望限定该简单元素的取值范围等约束,则应使用简单类型定义,并在简单类型中嵌套值约束子元素。如: 其中,约束的定义方式参考第6节。6 复杂元素描述复杂元素指包含属性或子元素的XML元素,如:,主要包括下列四类:l 空元素:只包含属性的元素。如:;l 只包含属性与子元素的元素。如:JackTom l 只包含属性与text的元素。如:Jackl 只包含属性、text和子元素的元素。如: Your name is: xxx xxx复杂元素是一种复杂类型,可以使用下面两种描述方式,一是复合结构,二是分离结构。复合结构,则直接将复杂类型定义为复杂元素的子元素;分离结构则是将复杂类型定义在外部,由复杂元素引用。l 复合结构 . l 分离结构 . 这两种描述结构也适合于属性、简单元素的描述。如果XSD元素中存在大量可复用的自定义数据类型时,建议使用分离式的定义结构。6.1 数据类型XSD的数据类型包括基本数据类型、简单数据类型、复杂数据类型三类。基本数据类型指W3C标准定义的数据类型,主要包括xs:integer、xs:string、xs:date、xs:boolean等。简单数据类型是基本数据类型的扩展,对取值进行约束;复杂数据类型则是一个复杂的数据结构,通常包含了属性或子元素定义。(1) 简单类型简单类型扩展基本数据类型,并对值施加一定的约束。如: 或 或 (2) 复杂类型复杂类型通常是复杂元素的数据类型或复杂元素的子元素,描述复杂元素的子元素、属性以及子元素与属性的类型。参看后续各小节的描述。6.2 约束约束指对简单类型的元素或属性施加的值约束条件,主要包含范围约束、长度约束、枚举值、模式匹配、空白处理等,是XSD元素或属性值限制的基础。(1) 范围约束范围约束主要施加到数值型、日期型等类型,限制取值的范围。如: 上述范围约束限定的取值范围是:0=值=120。其他的值范围约束元素主要包括:l fractionDigits 设置最大小数位数l totalDigits 指定精确的数值位数l maxExclusive 设置数值型的最大值(val xxx)l maxInclusive 设置数值型的最大值(val xxx)l minInclusive 设置数值型的最小值(val = xxx)(2) 长度约束长度约束施加到任何类型上限制值的长度,包括固定长度、最大长度、最小长度三个限定元素。如: (3) 枚举值约束枚举值约束限制元素或属性的值只能在给定的值列表中取值,并使用base属性指示值的数据类型。如: (4) 模式匹配约束模式匹配约束限制元素或属性的值应满足给定的模式要求,并使用base属性指示值的数据类型。如: 以下是些模式匹配的示例:l a-za-z间的单个字符;l A-ZA-Z 两个字符,每个字符都在AZ间;l a-zA-Z a-z或A-Z间的单个字符;l abc 单个字符 a或b或c;l (a-z)* 零个或任意个字符a-z;l (a-zA-Z)+ 一个或任意个字符对,每对字符大小写间隔出现;l a|b 值只能是a或b,与枚举类似;l a-zA-Z0-98 精确的八个a-z或A-Z或0-9间的字符。(5) 空白处理约束空白处理约束限制XML文档解析器如何处理值的组成空白字符,使用限定元素指示。如: value可能的取值包括:l replace 删除内容中的全部空白;l preserve 保留内容中的全部空白;l collapse 删除前导、后导空白,替换内容中的一个或多个空白为一个空格;6.3 属性属性本身总是定义为简单类型的。属性可以指定缺省值、固定值、强制项、约束等属性。属性定义格式是:。如:或 或 6.4 空元素描述空元素通常使用描述: 或使用描述,这种格式通常在元素包含属性和文本时使用。 或者使用分离结构描述。6.5 只包含子元素的元素描述 或使用分离结构描述。6.6 只包含text的元素描述Text总是基本类型或简单类型的,因此其描述使用扩展基本类型。 . 使用扩展基本类型;或: . 使用xs:restriction 扩展类型。如果元素包含属性和文本,则描述格式如下: 6.7 混合结构的元素描述如果子元素间夹杂了text,则text总被认为是xs:string的,因此只需描述子元素的组成,并使用mixed=true指示本元素是混合结构的元素。如下列描述:.xml Dear Mr.John Smith: Your order 1032will be shipped on 2001-07-13. Thanks.xsd 6.8 类型扩展XSD使用扩展一个基本类型、简单类型或复杂类型。扩展简单类型主要是增加附加的一些约束,扩展复杂类型则可以增加新的组成元素或属性。如:(1)基本类型扩展 (2)复杂类型扩展 对复杂类型进行扩展,使用,对简单类型进行扩展使用。6.9 复杂类型指令复杂类型指令控制子元素如何在复杂元素中使用,包括三类指令:顺序、次数、分组。(1) 顺序顺序指令控制子元素是否按顺序出现,包含三种类型:l 指示这些子元素最多出现一次,且顺序无关(minOccurs=0,maxOccurs=1)。 l 指示这些子元素必须按顺序出现。 l 指示这些子元素只能出现其中一个。 (2) 次数次数指令作为元素的属性,控制元素可以出现的次数,包含两个指令:minOccurs、maxOccurs。如:(3) 组组指令指示一个元素或属性集合。元素组使用嵌套一个all、choice、sequence指令;定义后,使用引用元素组。属性组使用嵌套多个属性定义。定义后,使用引用属性组。复杂类型还可以使用一些特殊的标记扩展文档。l 指示可以在此位置包含任何其他元素;(这些元素也必须在Schema文档中进行定义)l 指示可以在此位置包含任何其他的属性。(这些属性也必须在Schema文档中进行定义)6.10 置换组置换组可以根据用户需要选择使用一组元素,其实际的效果相当于给一个元素取了一个别名。如:navn是name的置换,因此文档中使用的位置均可以使用且的类型和类型一致。如果想禁止置换某个元素,可以在定义元素时使用 block=substitution 属性。置换元素和被置换元素必须是全局元素。所谓全局元素就是元素的直接子元素。嵌套在全局元素中的元素称为本地元素。(因此,复杂类型定义中总是使用的形式引用全局元素)6.11 最佳实践(1)将可能被共享的元素创建为全局基本元素;(或将全部元素创建为全局元素);(2)根据各元素的类型创建全局的类型,并设置必要的约束;(3)组合(引用)全局基本元素形成元素集合(复杂类型);(4)组合复杂类型为最终的模型。使用这种模式,适合大型项目,可以共享大量的元素定义,但缺点是由于共享大量的元素定义,可能导致模型比较复杂。7 实例下面我们对给定的xml建模其xsd文档,使用的工具是myEclipse。.xml John Smith Ola NordmannLanggt 234000 Sta
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025版铁塔基站租赁与广告位合作合同范本
- 2025版桥架安装与防雷接地工程承包合同样本
- 2025年建筑材料供货与绿色建筑认证服务合同
- 2025年二手房买卖合同:针对老旧房屋改造的特别约定条款
- 2025年度高效节水农业种植技术服务合同范本
- 2025年跨境矿山资源承包与国际贸易合同
- 2025版文化旅游区建筑承包合同范本
- 2025年数字经济法律咨询项目评标保密与委托合同
- 2025版石料矿山安全生产责任协议
- 2025年度旅游行程变更免责协议及游客须知
- 七年级班主任开学第一课课件
- XXX有限公司报销审核制度
- WS/T 427-2013临床营养风险筛查
- GA/T 1047-2013道路交通信息监测记录设备设置规范
- GJB9001C内审员培训讲学课件
- 五牌一图(完整版)
- 幼儿园绘本故事:《十二生肖》 课件
- 激光跟踪仪使用手册
- 新媒体运营知识考核试题与答案
- 金属材料的主要性能ppt课件(完整版)
- 丽声北极星自然拼读绘本第二级 Fat Cat 课件
评论
0/150
提交评论