XML Schema学习初体会

xml

  最近埋头苦读WMFC定义的接口1标准文档,其中对XML格式的定义都使用了XML Schema,由于XML Schema在很多方面都有很大的作用,大有取代DTD的趋势,所以在此写了一些学习笔记,有疏漏的地方请大家指正!

  XML Schema的其他方面偶就不在这里罗嗦了,直接进入主题,关于XML Schema的基本语法。

  XSDL(XML Schema定义语言由元素、属性、命名空间和XML文档种的其他节点构成的。

  一、XSD中的元素

  XSD文档至少要包含:schema根元素和XML模式命名空间的定义、元素定义。

1、schema根元素

  语法如下:

<xsd:schema xmlns:xsd=“http://www.w3.org/2001/XMLSchema”>

</xsd:schema>

  在XSD中必须定义一个且只能定义一个schema根元素。根元素中包括模式的约束、XML模式命名空间的定义,其他命名空间的定义、版本信息、语言信息和其他一些属性。

  2、元素

  语法如下:

<xsd:element name=”user” type=”xsd:string” />

  XSD中的元素是利用element标识符来声明的。其中name属性是元素的名字,type属性是元素值的类型,在这里可以是XML Schema中内置的数据类型或其他类型。

  例子:

<xsd:schema xmlns:xsd=“http://www.w3.org/2001/XMLSchema”>

    <xsd:element name=”user” type=”xsd:string” />

</xsd:schema>

  以上文档对应的有效XML文档如下:

<?xml version=”1.0”?>

<user>string</user>

  在元素的定义中还有2个属性:minOccurs和maxOccurs。其中minOccurs定义了该元素在父元素中出现的最少次数(默认为1,值为大于等于0的整数),maxOccurs定义了该元素在父元素中出现的最多次数(默认为1,值为大于等于0的整数)。在maxOccurs中可以把值设置为unbounded,表示对元素出现的最多次数没有限制。

  例子:

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

    <xsd:element name=”user” type=”xsd:string” minOccurs=”0” maxOccurs=”unbounded” />

</xsd:schema>

  表示为元素user的类型为string,出现的次数最少为0(也就是可选),最多不限制。

  3、引用元素和替代

  语法如下:

<xsd:schema xmlns:xsd=”http://www.w3.org/2001/XMLSchema”>

    <xsd:element name=”user” type=”xsd:string” />

    <xsd:element name=”name”>

        <xsd:complexType>

            <xsd:sequence>

                <xsd:element ref=”user” />

            </xsd:sequence>

        </xsd:complexType>

    </xsd:element>

</xsd:schema>

  引用是利用element标记符的ref属性实现的。主要适用于避免在文档中多次定义同一个元素,应当将经常使用的元素定义为根元素的子元素,以便在文档的任何地方引用它。

  在这里还可以为某个定义的元素起一个别名(偶的理解^o^),方法如下:

<xsd:schema xmlns:xsd=”http://www.w3.org/2001/XMLSchema”>

    <xsd:element name=”yonghu” type=”xsd:string” substitutionGroup=”user” />

    <xsd:element name=”user” type=”xsd:string” />

    <xsd:element name=”name”>

        <xsd:complexType>

            <xsd:sequence>

                <xsd:element ref=”user” />

            </xsd:sequence>

        </xsd:complexType>

    </xsd:element>

</xsd:schema>

以上文档对应的有效XML文档如下:

<?xml version=”1.0”?>

<name>

    <user>string</user>

</name>

或者:

<?xml version=”1.0”?>

<name>

    <yonghu>string</yonghu>

</name>

  主要是利用element标识符中的属性substitutionGroup实现的。

  4、设置默认值和固定值

  语法如下:

<xsd:element name=”city” type=”xsd:string” default=”xian” />

<xsd:element name=”country” type=”xsd:string” fixed=”china” />

  通过default属性的设置,可以在XML文档中没有对city元素定义时赋予默认值。而使用fixed属性,可以给元素country设定一个固定的值china,并且不允许改变!

  5、利用组合器控制结构

sequence组合器,定义了一列元素必须按照模式中指定的顺序显示(如果是可选的,也可以不显示)。语法如下:

<xsd:schema xmlns:xsd=”http://www.w3.org/2001/XMLSchema”>

    <xsd:element name=”name”>

        <xsd:complexType>

            <xsd:sequence>

                <xsd:element name=”first” type=”xsd:string” />

                <xsd:element name=”middle” type=”xsd:string” />

                <xsd:element name=”last” type=”xsd:string” />

           </xsd:sequence>

        </xsd:complexType>

    </xsd:element>

</xsd:schema>

  all组合器,允许所定义的元素可以按照任意顺序显示,all元素的子元素在默认情况下是必须的,而且每次最多显示一次。语法如下:

<xsd:schema xmlns:xsd=”http://www.w3.org/2001/XMLSchema”>

    <xsd:element name=”name”>

        <xsd:complexType>

            <xsd:all minOccurs=”0”>

                <xsd:element name=”first” type=”xsd:string” />

                <xsd:element name=”middle” type=”xsd:string” />

                <xsd:element name=”last” type=”xsd:string” />

            </xsd:all>

        </xsd:complexType>

    </xsd:element>

</xsd:schema>

  choice组合器,允许指定多组声明中的一个,用于互斥情况。语法如下:

<xsd:schema xmlns:xsd=”http://www.w3.org/2001/XMLSchema”>

    <xsd:element name=”name”>

        <xsd:complexType>

            <xsd:choice>

                <xsd:element name=”first” type=”xsd:string” />

                <xsd:element name=”middle” type=”xsd:string” />

                <xsd:element name=”last” type=”xsd:string” />

            </xsd:choice>

        </xsd:complexType>

    </xsd:element>

</xsd:schema>

  二、定义属性

在XML Schema文档中可以按照定义元素的方法定义属性,但受限制的程度较高。它们只能是简单类型,只能包含文本,且没有子属性。可以应用在attribute元素定义中的属性如下:

default    初始默认值

fixed      不能修改和覆盖的属性固定值

name     属性的名称

ref         对前一个属性定义的引用

type      该属性的XSD类型或者简单类型

use        如何使用属性

form      确定attributeFormDefault的本地值

id          模式文档中属性唯一的ID

Default、fixed、name、ref和type属性与在element标记中定义的对应属性相同,但type只能是简单类型。Use属性的值可以是:optional(属性不是必须的,此为默认属性)、prohibited或者required(属性是强制的)。

1、创建属性

语法如下:

<xsd:attribute name=”age” type=”xsd:integer” />

  该语句定义了一个名为age的属性,它的值必须是一个整数。把它添加到模式中时,它必须时schema元素、complexType元素或者attributeGroup元素的子元素。

  例子:

<xsd:schema xmlns:xsd=”http://www.w3.org/2001/XMLSchema”>

    <xsd:element name=”name”>

        <xsd:complexType>

            <xsd:sequence>

                <xsd:element name=”first” type=”xsd:string” />

            </xsd:sequence>

            <xsd:attribute name=”age” type=”xsd:integer” use=”optional” />

        </xsd:complexType>

    </xsd:element>

</xsd:schema>

  以上文档对应有效的XML文档如下:

<?xml version=”1.0”?>

<name age=”27”>

    <first>string</first>

</name>

  如上所示,要把属性附加在元素上,属性应该在complexType定义中的组合器之后定义或引用。

时间: 2024-09-23 01:51:45

XML Schema学习初体会的相关文章

XML Schema学习(一)

最近埋头苦读WMFC定义的接口1标准文档,其中对XML格式的定义都使用了XML Schema,由于XML Schema在很多方面都有很大的作用,大有取代DTD的趋势,所以在此写了一些学习笔记,有疏漏的地方请大家指正! XML Schema的其他方面偶就不在这里罗嗦了,直接进入主题,关于XML Schema的基本语法. XSDL(XML Schema定义语言)由元素.属性.命名空间和XML文档种的其他节点构成的. 一.XSD中的元素 XSD文档至少要包含:schema根元素和XML模式命名空间的定

XML Schema学习(二)

三.XML Schema数据类型 XML Schema提供了一组丰富的内置数据类型,用于定义元素中允许的类型.下面将介绍一些完全符合C#标准的通用类型. 1.基本数据类型 基本数据类型是在XML Schema中使用的每种数据类型的最基本构成块.可以根据这些类型构造自定义的类型.这些类型包括: boolean 可以是1(true)或者0(false).dateTime 表示时间的部分可选,格式:CCYY-MM-DDThh:mm:ss 例如:2005-3-18T14:48:12decimal 表示任

XML轻松学习手册(3)XML的术语

xml 第三章 XML的术语 提纲:   导言 一.XML文档的有关术语 二.DTD的有关术语 导言 初学XML最令人头疼的就是有一大堆新的术语概念要理解.由于XML本身也是一个崭新的技术,正在不断发展和变化,各组织和各大网络公司(微软,IBM,SUN等)都在不断推出自己的见解和标准,因此新概念漫天飞就不足为奇了.而国内又缺乏权威的机构或组织来对这些术语正式定名,你所看见的有关XML的中文教材大部分是靠作者本身的理解翻译过来的,有些是正确的,有些是错误的,更加妨碍了我们对这些概念的理解和学习.

XML轻松学习手册(4)

xml 二.DTD的有关术语 什么是DTD,我们上面已经简略提到.DTD是一种保证XML文档格式正确的有效方法,可以比较XML文档和DTD文件来看文档是否符合规范,元素和标签使用是否正确.一个DTD文档包含:元素的定义规则,元素间关系的定义规则,元素可使用的属性,可使用的实体或符号规则. DTD文件也是一个ASCII的文本文件,后缀名为.dtd.例如:myfile.dtd. 为什么要用DTD文件呢?我的理解是它满足了网络共享和数据交互,使用DTD最大的好处在于DTD文件的共享.(就是上文DTD说

一个简单的XML Schema的例子

xml 我们可以看到,DTD的语法相当复杂,并且它不符合XML文件的标准,自成一个体系.也就是说DTD文档本身并不是一个良好形式的XML文档,上面的关于DTD的介绍也仅仅是作了一个简介,目的是帮助大家能读懂DTD文件以及在必要时创建简单的DTD文件,因为现在很多的XML应用是建立在DTD之上的.另外一个代替DTD的就是W3C定义的Schema,Schema从字面意义上来说,可以翻译成模式.大纲.计划.规划等等.它的基本意思就是说为XML文档制定一种模式. Schema相对于DTD的明显好

XML的中阶知识巩固之XML Schema其一

用过 XML 的人都知道可用 DTD(Document Type Definition) 来验证语法,不过微软主导了新一代验证语法的 XML Schema,并且风头正劲,大有一统江湖之势.看看我们身边的几个变化就明白了. web.xml 从 web-app_2_3.dtd 到 web-app_2_4.xsd spring 配置文件从 spring-beans.dtd 到 spring-beans-2.0.dtd 到 spring-beans-2.0.xsd,直至灵活的自定义 Schema qua

一个简单的XML Schema例子

我们可以看到,DTD的语法相当复杂,并且它不符合XML文件的标准,自成一个体系.也就是说DTD文档本身并不是一个良好形式的XML文档,上面的关于DTD的介绍也仅仅是作了一个简介,目的是帮助大家能读懂DTD文件以及在必要时创建简单的DTD文件,因为现在很多的XML应用是建立在DTD之上的. 另外一个代替DTD的就是W3C定义的Schema,Schema从字面意义上来说,可以翻译成模式.大纲.计划.规划等等.它的基本意思就是说为XML文档制定一种模式. Schema相对于DTD的明显好处是XML

XML 轻松学习手册(比较不错)第1/3页_WML教程

我想就我个人学习过程的心得和经验,写一篇比较全面的介绍文章.首先有两点是需要肯定的: 第一:XML肯定是未来的发展趋势,不论是网页设计师还是网络程序员,都应该及时学习和了解,等待只会让你失去机会: 第二:新知识肯定会有很多新概念,尝试理解和接受,您才可能提高.不要害怕和逃避,毕竟我们还年轻. 提纲 本文共分五大部分.分别是XML快速入门,XML的概念,XML的术语,XML的实现,XML的实例分析.最后附录介绍了XML的相关资源.作者站在普通网页设计人员的角度,用平实生动的语言,向您讲述XML的方

XML轻松学习手册(三):XML的术语_XML/RSS

提纲: 导言 一.XML文档的有关术语 二.DTD的有关术语 导言 初学XML最令人头疼的就是有一大堆新的术语概念要理解.由于XML本身也是一个崭新的技术,正在不断发展和变化,各组织和各大网络公司(微软,IBM,SUN等)都在不断推出自己的见解和标准,因此新概念漫天飞就不足为奇了.而国内又缺乏权威的机构或组织来对这些术语正式定名,你所看见的有关XML的中文教材大部分是靠作者本身的理解翻译过来的,有些是正确的,有些是错误的,更加妨碍了我们对这些概念的理解和学习. 你下面将要看到的关于XML术语的解