XML及相关协议

1. 面向服务中的信息交换和数据类型1.1 电子信息交换定义

在执行领域(业务)相关功能时,各式各样、采用电子方式编码的信息,在软件单元之间的移动的过程。分类应用内部 - 信息在单个应用的不同部分之间移动应用之间 - 信息在同一个企业系统中的不同应用之间系统之间 - 信息在同一个企业的不同系统之间移动公司之间 - 信息在不同的公司之间移动交换方式基于二进制的方式(与实现紧密相关)基于平台相关的方式基于语言相关的方式基于文本的方式(文本能提供复杂的数据结构)基于某种中介的方式1.2 XML(信息交换方式)平台中立、语言中立、基于文本结构、能够表达复杂数据结构XML 及其相关协议在面向服务的计算中担任元数据的角色XML 用途:服务使用 XML 消息进行发布/查询/调用。描述服务(接口及流程)描述查询服务的服务需求描述服务的调用请求其他在面向服务计算中所需要执行的信息交换1.3 XML Schema(数据类型)定义

使用 XML Schema 脚本来对 XML 消息应当符号满足的数据结构进行约定和描述。在特定行业领域中,可以定义一组 XML Schema 脚本并通过网络发布,这些 XML Schema 可以被认为时数据类型标准2. XML2.1 定义XML 是满足一组良好定义规则的格式化文本,主要由标签和文本构成,可以被储存和展现为诸如通过 HTTP 传输的消息、编程语言中的字符串、数据库中的 CLOB等文本数据形式。

【注】为了方便起见,XML 文档也被用来指应用之间的字节流、数据库中的字段、XML 信息集中的对象集合。

2.2 结构XML 文档为树状结构

2.3 格式良好的 XML满足 5+1 规则的 XML 被称为格式良好的 XML。

单根元素:所有 XML 文档都只能有一个根元素元素标签规则:以开始标签和结束标签来包装元素元素嵌套规则:元素标签中间可以嵌套标签元素规则XML 命名:首字母必须是字母或_,后街任意长度的字母、数字、连字号等(不能含有空格,不能以“xml”任何大小写组合作为前缀);XML 名称大小写敏感XML 元素内容:XML 文档由使用标签对表示的元素、可选属性和可选元素的开始和结束标签之间的数据(可以是文本数据也可以是子元素)所构成。元素内容以两种方式进行处理:PCDATA(被解析的字符数据):默认方式,被 XML 解析器进行检查并提取其中的 XML 内容(需对预定义实体进行转义)CDATA(字符数据):采用特殊标记 进行包装,XML 解析器不做处理,只按照字面处理元素属性:标签中可以含有属性值键对(用来为元素附加信息,值必须使用单/双引号括起)XML 声明:可选,出现在 XML 文档中的第一行(,可添加键值对属性)encoding 属性:用来表达文档所使用的编码(默认为 UIF-8 或 UTF-16)standalone 属性:用来表达文档的完整性,即该文档是否依赖于文档外的其他信息(默认为“no”)2.4 合法的 XML合法的 XML 文档持有一个额外的词汇表,并遵循该词汇表所定义的结构化规则用 DTD 或 XML Schema 进行定义,XML 解析器可以选择是否使用词汇表进行合法性检查(比如类型检查等)。

3. NameSpace3.1 元素和属性名称冲突使用标准的领域数据架构,定义语义并解决名称冲突(×\times×) 由于领域孤岛可能交互,故该方法不可行

名称空间(✓\checkmark✓)为了在全球范围内解决名称冲突问题,可以从概念上,将元素和属性名表达为 URI+名称(比如:)作为前缀的 URI 被称为名称空间 NameSpace为了保证 XML 格式良好,采用别名代替 URI(比如:books="http://www.library.com/books" 然后直接使用 )3.2 QNames(Qualified Names)引入名称空间后,元素名称和属性名称转换为两部分名称,即 QNamesQNames 用来在 XML 中担任元素名称和属性名称QNames 包含前缀部分和本地部分 从概念上,前缀 prefix 是名称空间的别名(比如: ,books 为名称空间别名)3.3 名称空间声明语法: ··· 举例:使用名称空间声明定义元素:

代码语言:javascript复制

···

使用名称空间定义属性:

代码语言:javascript复制

···

3.4 名称空间作用域名称空间前缀的作用域为定义该名称空间的元素(含嵌套的子元素和所隶属的属性)名称空间前缀可以在嵌套的子元素中进行重新定义默认名称空间:在大多数元素隶属于相同的名称空间时,可以使用默认名称空间语法 ··· 在默认名称空间的作用域内,可以使用 QName 来定义隶属于其他名称空间的元素

代码语言:javascript复制

xmlns = 'http://www.library.com/books'

xmlns:amazon = 'http://www.amazon.com/products'>

···

A25

···

默认名称空间不作用于属性,如不适用 QName ,默认情况下,属性没有名称空间使用 xmlns = "" 定义没有名称空间的元素属性不受默认名称空间的影响,特定元素中的属性应各不相同(即属性不能重复定义)4. XML Schema4.1 引入 XML Schema 原因业务需要增加数据的表示能力需要融合来源于不同组织的词汇表通过提升通信效率的方式以减少集成的成本技术采用具体的定义验证 XML 文档采用 XML 语法定义数据结构和约束条件支持名称空间表达数据元素之间的关系4.2 XML Schema 结构【注】targetNamespace 指定该 XML Schema 所定义的元素所隶属的名称空间。

4.3 XML Schema 类型系统简单类型(不存在树状结构)不能含有属性或子元素是 XML Schema 类型语言中的原子类型可以用以定义其他类型(简单类型或复杂类型)XML Shema 包含 40 多个预定义的简单类型复杂类型(一定存在树状结构)可以含有属性可以含有子元素可以用来定义其他复杂类型不能用来定义简单类型代码语言:javascript复制

4.4 元素声明采用已有的类型定义(内建或已定义)来说明元素代码语言:javascript复制

type='xsd:nonNegativeInteger'

minOccurs='1' maxOccurs='1'/>其中,name 指定元素名称,type 指定元素值的类型,minOccurs、maxOccurs指定元素至少、至多出现的次数。

定义复杂元素采用排序符定义元素中的子元素按序列出现的 firstName 和 lastName代码语言:javascript复制

maidenName 和 cityOfBirth 选择其一代码语言:javascript复制

height 和 weight 以任意顺序出现代码语言:javascript复制

2.声明属性

代码语言:javascript复制

其中,属性由 指出。

该属性指出,如果 XML 文档中的属性不是数值类型,或数值不为 32.0 ,则无法通过 XML Schema 验证。

4.5 寻找 XML Schema使用 xsi:schemaLocation 或 xsi:noNamespaceSchemaLocation 来指定当前 XML 可以获取到对应 XML Schema 位置(可指定也可不指定)。

代码语言:javascript复制

xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

xsi:schemaLocation="http://www.ibm.com/WD03/Schema/schema.xsd">25