当前位置:文档之家› 第2章 XML命名空间和Schema约束_

第2章 XML命名空间和Schema约束_


示例
<?xml version="1.0" encoding="US-ASCII"?> <!—除去缺省的命名空间之外,此处还定义了另外3个命名 空间--> < U n i v e r s i t y xmlns='/Univ/Default' xmlns:RD='/Univ/RD' xmlns:Admit='/Univ/Admit '> < A c a d e m i c R e s e a r c h xmlns:xmlschema='/Univ/R D'> <RD:Dean> Sophiya </RD:Dean> <RD:AssistantDean> Maria
XML 模式元素
因为 XML 模式是使用 XML 语法编写的,所以 XML 模式定义的结构是指我们可以用来定义标记的 XML 构造元素 这部分规范将描述用来定义模式的元素和属性 同时,在这一部分中也将描述内容模型 它们显式地指定了允许使用的元素的内部结构
XML 模式中的数据类型
基本数据类型
基本数据类型是指那些不用其它数据类型来定义的 数据类型 它们构成所有其它数据类型的基础,而且不可以被 更小的组成部分定义 它们不可以具有元素或内容属性,因为它们是派生 出所有其它数据类型的基本类型
任何派生的类型都基于基本数据类型以及施加于它 的约束 它的定义如下: <xs:simpleType name="negativeValues" > <xs:restriction base="xs:integer"> <xs:maxExclusive value="0"/> </xs:restriction> </xs:simpleType>
简单类型定义使用 <simpleType> 元素、它的属性 和任何有效的约束 facets 其语法如下: <xs:simpleType> <xs:restriction base="基础数据类型" > 限定条件定义… </xs:restriction> </xs:simpleType>
<xs:restriction> 元素
示例 — XSD 代码
XSD 代码
<?xml version="1.0" encoding="UTF-8"?> <xs:schema xmlns:xs="/2001/XMLSchema"> <xs:element name="Message" type="xs:string"/> </xs:schema>
பைடு நூலகம்
<xs:element> 元素具有的一些属性
属性名 Name Type Ref default Fixed minOccurs 值 任何有效的名称 整型、字符串型等 任何有效的名称 任何允许使用的值 任何允许使用的值 任何正数。如果没有限 制,使用无限大的值 (unbounded) 被声明的元素名 指定元素的数据类型 该元素用来引用另一元素名 指定元素使用的缺省值 指定固定的值。不允许在 XML 文档 中给出其它值 用来指定允许出现的最少次数 描述
<schema> 元素使用它的属性来标识任何将被 <schema> 及其子元素使用的外部模式
<xs:element> 元素
该元素用来创建元素并定义它的结构 元素类型的定义也包含在此标记中 其语法如下: <xs:element name="elementName" type="datatype"/> 元素名对应于 XML 元素名 数据类型对应于施加于元素可以保存的数据上的 约束
名称空间
XML 名称空间提供了一种避免元素名称冲突的方法 它们通过给标记名关联一个词汇来解决名称冲突的 问题 名称空间可以使不同概念空间下的多个元素名出现 在同一个 XML 文档中 创建名称空间的语法如下: xmlns:prefix=namespacevalue
对 元 素 应 用 名 称 空 间 的 语 法 是 : <NameSpace:ElementName>Content</NameSp ace:ElementName>
Facet
Facet 是一个数据类型的定义特性之一,它将一个数 据类型与其它数据类型区分开来 它是一个值空间特性 它包括诸如一个数值数据类型或一个字符串长度的 边界之类的特性 Facet 分为两类:
XML 模式定义
XML 模式本身是一个 XML 应用,这意味着它被实现 为 XML 词汇 XML 模式文档基于 XML 语法 模式以下述语句作为开始: <?xml version="1.0" encoding="UTF-8"?>
模式定义包含在 < xs:schema> 标记中
<xs:schema> 元素
XML 代码
<?xml version="1.0" encoding="UTF-8"?> <Message xmlns:xsi="/2001/XMLSchemainstance" xsi:noNamespaceSchemaLocation="Message.xsd"> Hello World </Message>
缺省名称空间
如果文档中的大多数元素属于同一个名称空间,那 么不必对每个元素名都附加前缀 可以定义一个缺省的名称空间,并把它应用到所有 未附加前缀的元素和属性 定 义 一 个 缺 省 名 称 空 间 的 语 法 为 : xmlns="namespace" 示例:
<NAME xmlns="/NA"> <TITLE>Mr. </TITLE> <FIRST>Sidney </FIRST> <SECOND>Sheldon </ SECOND> </NAME>
用户定义的数据类型定义
XML 模式提供了两种用户定义的数据类型定义:
–派生的或简单的
–复杂的
简单定义使我们知道该如何创建派生数据类型,包 括那些被内置到模式规范中的数据类型 复杂的定义主要用来描述内容模型 用户定义类型具有以下一些特性:
– 值空间 – 词汇空间 – Facets 或约束
<xs:simpleType> 元素
属性和名称空间
和元素名一样,我们可以在属性名前添加一个名称 空间前缀 考虑一个以值 /Univ/RD 声明的名为 RD 的名称空间 当我们有了一个声明为 id 的属性以后,我们还需要 使用名为 RD 的名称空间来限定它 以下示例显示了具有名称空间的属性
<University xmlns:RD='/Univ/RD'> <RD:Dean RD: id=”1” > John </RD:Dean> </University>
XML 模式的优点
XML 模式是基于 XML 的,而不是某些专用语法 它们提供了一个开放式的数据模型,从而使我们可 以扩展词汇,并且在不违反文档语法的前提下建立 继承关系 它们支持多种数据类型,如 Integer(整型)、Float (浮点型)、Boolean(布尔型)和 date(日期型) XML 模式支持属性组,从而使我们可以在逻辑上对 属性进行组合 它们支持名称空间集成,从而使我们可以将一个文 档的个别节点与一个模式中的类型声明关联
通常,一个 XML 模式包含一个序言,该序言后面跟 有一个或多个声明 序言是一组在 <xs:schema> 元素中声明的属性 以下代码给出了定义模式时使用的 <xs:schema> 元素的语法:
<xs:schema xmlns:xs="/2001/XMLSchema"> ... </xs:schema>
示例
<?xml version="1.0" encoding="UTF-8"?> <AUTHOR> <TITLE>Mr.</TITLE> <FIRST>Sidney</FIRST> <SECOND>Sheldon</SECOND> </AUTHOR>
示例 ... 1
<?xml version="1.0" encoding="UTF-8"?> <BOOKS> <BOOK> <TITLE>Sky is Falling</TITLE> <PRICE>$5.6</PRICE> </BOOK> <BOOK> <TITLE>Rage of Angels</TITLE> <PRICE>$4.3</PRICE> </BOOK> </BOOKS>
在 XML 文档内部引用模式
X M L 模 式 语 言 是 由 名 称 空 间 /2001/XMLSchema 来识别 的 文档可以用 schemaLocation 或 noNamespaceSchemaLocation 属性来引用一个 模式 包含模式定义的方法如下: < R o o t E l e m e n t xmlns:xsi="/2001/XMLS chema-instance" xsi:noNamespaceSchemaLocation="externalx sdfile">
相关主题