XML Schema学习笔记(一)

原创 2007年10月03日 15:50:00

XML Schema学习笔记(一)

XML规范包括DTD(Document Type Definition,文档类型定义)DTD可用于描述XML标记语言,并检验标记语言实例的有效性。虽然多年来已经证明DTD非常有用,但仍有一定的局限性。为了解决DTD的局限性,W3C创建了一种用于描述标记语言的新方法,即XML Schema

1.  XML Schema的优势

读取XML实例的解析器要通过将XML实例与DTD比较来确定实例是否有效。为使XML实例有效,该实例必须符合它的DTD,即必须按正确的顺序和多样性来使用由DTD的元素。同时DTD中只提供了四种的数据类型,即EMPTYANY、元素内容和元素与文本的混合内容。

XML Schema提供了很强的类型系统,包括简单的原始类型以及更为复杂的类型。XML Schema还允许通过扩展或限制简单或者复杂类型来创建新类型。此外,XML模式支持用XML命名空间创建由多种标记语言构成的复合文档。

2.  XML Schema文档

Schema以复杂类型和简单类型的方式描述XML文档的结构。复杂类型描述如何组织、嵌套元素;简单类型是由元素和特性包含的原始数据类型。

<?xml version="1.0" encoding="UTF-8"?>

<scheam xmlns="http://www.w3.org/2001/XMLSchema"

      xmlns:cs="http://www.Cactus.org/cactus"

      targetNamespace="http://www.Cactus.org/cactus">

      <element name="address" type="cs:ChinaAddress"/>

      <complexType name="ChinaAddress">

             <sequence>

                    <element name="name" type="string"/>

                    <element name="street" type="string"/>

                    <element name="city" type="string"/>

                    <element name="state" type="string"/>

                    <element name="zip" type="string"/>

             </sequence>

      </complexType>

</schema>

Schema文档的根元素总是schema元素。元素声明和类型声明嵌套于schema元素中。上述例子中声明了一个名为ChinaAddress的复杂类型和该类型的一个名为address的元素。

2.1  简单类型

简单类型类似于Java原始类型,其中不能再包含其他元素,只能包含数据。

XML Schema内置简单类型

简单类型

定义

string

符合UCS的符号序列

normalizedString

没有结束符、开始符和制表位的字符串

token

没有空白、开始符合制表位的字符串

NMTKEN

特性中使用的令牌

integer

任何大小的十进制整数

float

符合IEEE单精度32位浮点类型的小数

boolean

布尔值

Time

以小时、分、秒、毫秒格式表示的时间

date

以世纪、年、月和日格式表示的日期

2.2 复杂类型

Schema可以声明复杂类型。复杂类型定义了如何组织包含有其他元素的元素,类似于有字段没有方法的Java类。

2.2.1 元素序列

各模式中的大多数complexType声明均会包含一个列有一个或者多个element元素定义的sequence元素。其中也定义了元素出现的顺序以及每个元素的数据类型。

<?xml version="1.0" encoding="UTF-8"?>

<schema xmlns="http://www.w3.org/2001/XMLSchema"

       xmlns:cs="http://www.Cactus.org/cactus"

       targetNamespace="http://www.Cactus.org/cactus">

       <element name="purchaseOrder" type="cs:PurchaseOrder"/>

       <element name="address" type="cs:ChinaAddress"/>

 

       <complexType name="PurchaseOrder">

              <sequence>

                     <element name="accountName" type="string"/>

                     <element name="accountNumber" type="unsignedShort"/>

                     <element name="shipAddress" type="cs:ChinaAddress"/>

                     <element name="billAddress" type="cs:ChinaAddress"/>

                     <element name="book" type="cs:Book"/>

                     <element name="total" type="float"/>

              </sequence>

       </complexType>

       <complexType name="ChinaAddress">

              <sequence>

                     <element name="name" type="string"/>

                     <element name="street" type="string"/>

                     <element name="city" type="string"/>

                     <element name="state" type="string"/>

                     <element name="zip" type="string"/>

              </sequence>

       </complexType>

<schema>

复杂类型可以建立在其他复杂类型之上,以创建能够方便描述非常复杂的XML结构的丰富类型。

2.2.2 限定元素和非限定元素

可以利用命名空间使元素限定或者非限定,即XML文档中的元素可以有限定名称前缀,也可以没有。但全局元素和全局特性必须总为限定。有个例外,属于默认命名空间的全局元素不需要用前缀来限定。

XML Schema定义了elementFormDefault特性和attributeFormDefault特性,这两个特性用于确定XML实例中的局部元素是否需要前缀来限定。

2.2.3 指定模式的位置

为根据一个或多个Schema检验XML文档,用户需要指定要使用的Schema。通过用schemaLocation特性指定Schema的位置就行。

<?xml version="1.0" encoding="UTF-8"?>

<purchaseOrder xmlns="http://www.Cactus.org/cactus"

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

       xsi:schemaLocation="http://www.Cactus.org/cactus

              http://www.Cactus.org/cactus/po.xsd">

如果需要的话,可以指定若干个Schema

 

相关文章推荐

xml schema 学习笔记

  • 2013年08月20日 11:38
  • 95KB
  • 下载

学习笔记——XML Schema自定义简单数据类型

XML Schema规范共推荐12种约束。 范围约束 minInclusice、manInclusice、minExclusive、maxExcusive 长度约...

JavaWeb学习笔记之xml&DTD&schema

开发工具 junit单元测试 xml文件的常见应用: 1、交换数据 2、配置文件 1.xml概述 1.1xml概念:xml本质上是一种数据存储的格式,可以在保存数据的同时保存数据之间的关系...
  • ladooz
  • ladooz
  • 2013年02月28日 22:42
  • 361

学习笔记——XML Schema简介及命名空间

XML Schema Definition(XSD) XML本身也是XML文档,其根元素是 支持的属性: elementFormDefault=qualified | unqualified:用...

xml学习笔记——dtd和schema

XML是一种用作网络数据传输的语言,它不同于HTML,HTML主要用来表现数据,而XML主要用来传输数据。 XML的知识点很多,它是一门比较复杂的语言。在这里要谈的只是冰山一角——XML的两种文档定...

学习笔记——XML Schema定义元素

Schema使用定义元素。   元素类型分类: 普通元素、空元素类型、混合内容类型。   空元素类型用于定义元素内容为空(null)的元素。 Schema提供了两种定义空元素类型的方式: ...

学习笔记——XML Schema内置数据类型

Schema的内置类型继承关系       Schema内置类型说明   Table 2. Simple Types Built In to XML Schema ...

Spring学习笔记(三)—基于XML Schema的配置方式

基于XML Schema的配置方式,简化配置文件

Xml学习笔记:(一)schema元素类型

一、注释元素1、xsd:annotation xsd:annotation包含两个子元素xsd:documention和xsd:appinfo,这两个元素是schema中唯一的混合元素类型,可以包含任...

学习笔记——XML Schema自定义数据类型(续)

阻止派生新的简单类型   Schema通过使用元素的可选final属性和的finalDefault属性的值来限制派生新的类型。 final和finalDefault可接受如下值: 1:#all...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:XML Schema学习笔记(一)
举报原因:
原因补充:

(最多只允许输入30个字)