




已阅读5页,还剩38页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第4章XMLScherma 4 1XMLSchema概述4 2XMLSchema的文档结构4 3XMLSchema标记及属性定义4 4全局声明和局部声明4 5XMLSchema的组定义4 6XMLSchema中的注释4 7XMLSchema命名空间 4 1什么是XMLSchema 1 XMLSchema是W3C开发的一种新的约束XML文件的模式 是一种特殊的XML文件 遵循XML的语法规则 DTD则具有自己的语法 所以 只需懂得XML的语法规则即可编写Schema 无需学习其他语法规则 XMLSchema可以弥补DTD的不足之处 例如 DTD的数据类型有限 当声明一个标记的标记内容为文本数据时 声明为 PCDATA 却不能限制文本的具体类型 如 整型 浮点型等 而XMLSchema则可以具体定义数据的具体类型 XMLSchema不但提供了丰富的数据类型 还允许用户自定义类型 XMLSchema常用的数据类型见下表 4 1什么是XMLSchema 2 更多详细信息可参考 http www w3 org TR xmlschema 2 built in datatypes XMLSchema中常用的基本数据类型 XMLSchema中常用的基本数据类型 4 1什么是XMLSchema 3 XMLSchema中常用的基本数据类型 与DTD相比 XMLSchema具有如下优点 1 可以更容易地描述文档结构 2 可以方便地定义数据模型 3 可重用性 虽然Schema比DTD对数据的限制好 但实现相同的功能Schema比DTD的代码长很多 而且 Schema也不是万能的 DTD可以实现Schema不能实现的功能 XMLSchema不能完全替代DTD 它们各有优势 返回 上面代码中第一行以XML声明开始 说明这是一个XML文件 所有内容都添加在根标记 xsd 是名称空间的前缀 可以任意定义 一般都设置为 xsd 或 xs XMLSchema文档是特殊的XML文档 要遵循XML的语法规则 W3C规定 一个XMLSchema文档的根标记必须是 schema 名称空间必须是 http www w3 org 2001 XMLSchema 下面是它的基本形式如下 4 2XMLSchema的文档结构 1 Schema内容 4 2XMLSchema的文档结构 2 一个简单的实例 这段程序只定义了一个标记 返回 XMLSchema示例 1 7 302 12066 8JAVA实用教程HerbertSchildt马海军64 00 必要声明 使用的文档 7 5037 1978投资学张中华谢进城19 00 声明是一份xml 使用默认的命名空间 关于booklist的说明 自定义 最多出现的次数 属性说明 子元素说明 子元素按顺序出现 属性值只出现一次 用户自定义 枚举类型 authorlistType作者列表 4 3XMLSchema标记及属性定义 4 3 1简单类型标记的定义 4 3 2自定义数据类型 4 3 3复杂类型标记子标记的定义 4 3 4复杂类型标记的属性的定义 4 3 5空标记及混合内容标记的定义 返回 简单类型标记的定义 1 简单标记是指不带有任何属性及子标记的标记 定义简单标记可以通过标记来完成 格式为 例如 简单类型标记的定义 2 标记的属性名称和作用见下表 返回 自定义数据类型 1 XMLSchema已经提供了40多种的数据类型 把数据已经分的很具体了 但有时为了更好的满足需要 Schema还可自定义的数据类型 自定义数据类型是指以一个XMLSchema类型为基础 添加一些限制条件 使之成为一个新的类型 自定义数据类型使用标记 通过这个标记可以给XMLSchema提供的数据类型添加一些限制 从而构造出新的类型 常用的有以下6中类型 1 限定数值范围2 限定数值位数3 限定字符串范围4 枚举类型5 列表类型6 联合类型 自定义数据类型 2 1 限定数值范围 XMLSchema中提供了4种标记用来限制数值的范围 和它们都有一个 value 属性 意义分别为 1 表示小于等于 value 属性的值 2 表示大于等于 value 属性的值 3 表示小于 value 属性的值 4 表示大于 value 属性的值 自定义数据类型 3 1 限定数值范围 例如 上面这段代码定义了一个 score 标记 标记值的类型为 simpleType1 接下来的6行定义了一个新的类型 名称为 simpleType1 标记的 base 定义了该类型的基本类型是 float 接下来的两行限定了数值范围是0 100之间 包括0和100 自定义数据类型 4 2 限定数值位数 在XMLSchema中有一个 decimal 数据类型 用来准确地表示数值 通过标记和来准确限制数值 其中 用来限制数值的总位数 用来限制小数点后面的位数 例如 自定义数据类型 5 3 限定字符串范围 限定字符串范围分为两种 限定字符串长度和限定字符串内容 XMLSchema通过 和来限定字符串的长度 用来限定字符串的内容 限定字符串长度的例子 自定义数据类型 6 3 限定字符串范围 XMLSchema中的标记可以限定字符串的内容 例如 上面这段代码定义了一个 tel 标记 该标记的值要满足正则表达式 0 d 2 3 d 7 8 所限定的值 这个表达式的意义是 d 表示任意数字 0 d 2 3 表示区号 以 0 开头后面是2 3位数字 是固定字符 表示有0个或1个 d 7 8 表示7到8位数字 所以 该表达式所表示的值是一个可以带区号 也可以不带区号的电话号码 自定义数据类型 7 4 枚举类型 XMLSchema中使用标记来定义枚举类型 例如 上面的这段代码定义了一个标记 jilin 该标记的值只能为 changchun jilin 和 songyuan 中的一个 枚举类型可用于除布尔型以外的所有简单类型 枚举的值可以包含空格 但每一个枚举项的值必须是唯一的 自定义数据类型 8 5 列表类型 在XMLSchema中 用标记来定义列表类型 例如 在定义列表类型的同时 还可以指定列表的长度或长度范围 分别用标记或 来指定 例如 自定义数据类型 9 6 联合类型 联合类型是一个标记的内容可以是多种类型中的一种 例如 上面的代码段说明 code 标记的内容可以是字符串型的数据 也可以是整型的数据 如果标记内容的数据类型不包含在 memberTypes 中所列举的数据类型中 则相应XML文件也不是有效的XML文件 返回 复杂类型标记子标记的定义 1 复杂类型的标记是指含有子标记或属性的标记 在XMLSchema中 用标记来定义复杂类型的标记 通过可以指定标记与标记或标记与属性的从属关系 定义子标记的语法格式为 子标记描述 复杂类型标记子标记的定义 2 一个实例 这段程序定义了4个标记 标记 eng math physics 是 score 的子标记 在标记块中 通过标记封装了一组标记 表示这些标记的出现有固定的顺序 复杂类型标记子标记的定义 3 除了标记外 其他可选的标记还有和 表示其中包含的标记可以无顺序地出现一个或多个 表示其中包含的标记可以任意出现一个 在XMLSchema中 用 minOccurs 和 maxOccurs 属性来定义子标记出现的次数 分别表示最少出现次数和最多出现次数 有以下几种情况 1 maxOccurs 表示该标记可以出现一次或多次 2 maxOccurs 1 表示该标记只能出现一次 3 minOccurs 0 表示该标记可选 即出现0次或1次 除了上述情况 还可以指定其他具体的值 复杂类型标记子标记的定义 4 一个例子 这段程序说明 name 标记是一个必须出现的标记 sex 标记没有这两个属性 也表示是必须出现的标记 age 是一个可选的标记 返回 复杂类型标记的属性的定义 1 XMLSchema中 标记的属性通过标记来声明 其基本语法格式为 标记的属性除了 name 和 type 属性外 还有其他一个常用的属性 use 表示该属性出现的情况 属性值可以是optional prohibited和required中的一个 分别表示该属性是可有可无 禁止赋值的和必须赋值 use 属性的值还可以是fixed或default 意义分别为 该属性的值是固定的或指定属性的默认值 默认值可以改变 复杂类型标记的属性的定义 2 例子 返回 空标记及混合内容标记的定义 1 空标记是指不含有任何标记内容的标记 但可以含有属性 例如 空标记可以用如下的方法定义 这段代码定义了一个新的类型 emptyType content 属性为 empty 说明该类型的标记不含有任何标记内容 标记的 base 属性的值为 anyType 说明该类型不建立在任何类型的基础上 该类型含有一个属性 att1 属性值为字符串类型 空标记及混合内容标记的定义 2 混合内容的标记是指既包含文本内容又包含子标记的标记 下面的例子定义了一个含有混合内容的标记 上面代码中标记的 content 属性的值设置成 mixed 说明该类型标记所标记的内容可以有文本 也可以有子标记 上面这段代码说明 该类型的标记可以含有文本数据 也可以含有一个子标记 element1 空标记及混合内容标记的定义 3 定义只含有文本数据和属性的标记的格式为 上面代码中标记说明该标记的内容只包含某一类型的文本 文本类型通过 base 属性来指定 返回 4 4全局声明和局部声明 在XMLSchema中 标记可以分为全局和局部的 直接在元素下声明的标记和属性是全局的 这些元素和属性可以通过和元素的 ref 属性来引用 注意 1 声明的全局标记和属性的名称必须是唯一的 2 在全局声明中不能使用 ref 属性 3 全局声明的标记在XML文档中可以作为根标记出现 在复杂类型定义内部声明的标记和属性是局部的 由于简单类型不包含子标记和属性 所以局部标记和属性不能在简单类型定义内部声明 返回 全局标记示例 第一种方式声明的3个标记都是全局的 全局标记的名字必须是唯一的 而且只能声明一次 全局标记都可以作为根标记出现 第二种方式中 element1是全局的 element2和element3是局部的 根标记只能是element1 元素的全局声明和局部声明最明显的区别是在其他声明中可以引用全局声明 而局部声明只能存在于它们自己的局部范围内 4 5XMLSchema的组定义 1 对于Schema中多次重复出现的一组标记或属性 我们可以把它们定义成一个标记组或属性组 然后通过引用来使用 这样可以大大提高代码的重用性 从而也使代码的结构性变得更强 在XMLSchema中标记组用标记定义 属性组用标记来定义 例如 定义一个组 4 5XMLSchema的组定义 2 使用组 标记和标记类似于标记 但不同的是 标记结构可以被标记使用 而标记结构或标记结构只能被标记调用 返回 4 6XMLSchema中的注释 Schema文件的注释可以和XML文件的注释方法相同 即 此外 Schema还提供了另一种添加注释的功能 通过标记来添加注释 它含有两个子标记和 它们的区别在于 前者是面向用户的 后者是面向解析器的 例如 booktypybook 返回 3 7XML命名空间 XML作为一种允许用户定义自己标记的标记语言 很可能出现名称重复的情况 命名空间是一种避免名称冲突的方式 W3C颁布的命名空间 NameSpace 标准中对命名空间的定义是 XML命名空间提供了一套简单的方法 将XML文档和URI引用标记的名称相结合 来限定其中的元素和属性名 也即命名空间给XML名称添加前缀 使其能够区分所属的领域 从而为元素和属性提供唯一的名称 其最重要的用途是用于融合不同词汇集的XML文档 什么是命名冲突 在相同的作用域当中 如果有两个元素或属性的名字完全相同 就会出现冲突 例如 我的电脑包括内存和硬盘两个元素 这两个元素都包括容量这个属性 当这两个元素统称为存储设备时 内存设备要用到两容量属性 这时容量属性就会出现冲突 不知道具体是哪一个容量属性 解决命名冲突途径 为解决命名冲突的问题 引入命名空间的概念 命名空间的声明方法为 xmlns name
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 考研英语阅读技巧提高
- 小学英语分级分项复习计划制定方案
- 云计算技术实施方案
- 初中生物实验成绩统计分析报告
- 工业设备气密试验记录管理规范汇编
- 2025年老年医学老年常见疾病护理与管理技能考评试卷答案及解析
- 2025年药学知识与用药安全测试卷答案及解析
- 2025年妇产科妇科手术并发症护理指导试题答案及解析
- 2025年泌尿外科尿路结石溶石治疗考核答案及解析
- 药品临床试验数据管理系统应用案例
- 贷款中介签服务合同模板(3篇)
- 贵阳市2026届高三年级摸底考试物理试卷(含答案)
- 美发编发基础知识培训课件
- 同期线损培训课件
- 反诈知识竞赛试题及答案
- 钢筋加工棚租赁合同范本
- 2025年电梯检验员资格考试历年真题及答案试题试卷(含解析)
- 眼整形课件教学课件
- 公司法务知识培训会课件
- 中国诗词协会入会申请表
- 实现离心泵自动吸水的方法
评论
0/150
提交评论