XML Schema

一、Schema的概述

1.XML Schame 概念:

XML Schema 是基于 XML 的 DTD 替代者。XML Schema 可描述 XML 文档的结构。

XML Schema 语言也可作为 XSD(XML Schema Definition)来引用。

XML Schema 的作用是定义 XML 文档的合法构建模块,类似 DTD。

2.XML Schema的特征:

(1)一致性:利用XML的基本语法规则来定义其文档结构,从而使XML的模式和实例定义达到了统一;继承了XML的自描述性可扩展性,使其更具有可读性和灵活性;

(2)完备性:XML Schema 对DTD进行了扩充,引入了数据类型、名称空间,并且支持对其他XML Schema的引用,从而使其具备较强的模块性;

(3)规范性和准确性:XML Schema提供了更加规范和完备的机制来约束XML文档;XML Schema的语义更加准确,可以完成一些DTD不能完成的定义,如对元素出现次数的约束等;

(4)面向对象特征:XML Schema中引入了许多成熟的面向对象机制(如继承性和多态性),使得数据模式在应用中更加灵活;

(5)扩展性:DTD所描述的文档结构是非常严格的(closed),没有经过显式声明的内容绝不允许出现在XML实例数据中;而XML Schema则提供了一些扩展机制(open),允许在事先无法准确描述数据模式的情况下,在XML实例数据中根据需要添加相关的数据。
 

二、Schema 的基本结构

1.Schema 文档示例

2.1扩展名为.xsd

2.2基本结构:

b9d6ea1fc7334a848dce698886e946f6.jpeg

(1)根标记必须是schema;

(2)名称空间必须是:http://www.w3.org/2001/XMLShema

(3)必须定义且只能定义一个Schema根元素,根元素用于说明文档类型、模式的约束、XML模式名称空间的定义、版本的信息。

2.3XML文档与Schema关联:

<?xml version="1.0" enconding="gb2312"?>
<studenntlist xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:noNamesapaceSchemaLocation="要关联的文件.xsd">

2.Schema的主要组件

2.1类型

简单类型:带有子元素或使用属性的元素

复杂类型:不包含任何子元素和属性,只含有文本内容的元素

2.2元素

1)name:声明元素的名字;

2)type:声明元素的数据类型,可以使用Schema的数据类型,也可以使用自定义的数据类型。该类型要么是声明元素的属性,要么是声明元素标签之间的内容或者子元素。

3)minOccurs:该属性值为一个整数,表示该声明元素最少要出现的次数,最小值为0。

4)maxOccurs:该属性值为一个整数,表示该声明元素最多能出现的次数,最小值为1,如果值为unbounded,则表示无限制。

(course)元素的声明:

<xsd:element name="course" type="xsd:string"/>

2.3属性声明

注意:1.只有复杂类型的元素才能拥有属性,简单类型的元素没有属性。

          2.元素可以有简单类型或复杂类型,而属性只能有简单类型。

<element name="元素名称" type="元素数据类型">
<xsd:complexType name="元素数据类型">
<xsd:attribute name="属性名称" type="属性的数据类型" use="use-method" default="value" fixed="value">
  </xsd:attribte>
</xsd:conplexType>

说明:

1.use-method:(属性取值的实际要求):

1)optional:表示该属性值可有可无,是默认值。

2)required:表示该属性值必须存在,该属性值至少出现一次。

3)prohibited:表示该属性值不可出现,用于在restriction元素中限制属性的使用。

2.default和fixed两者取一个,default指属性的默认值,fixed指属性如果存在,则其内容只能由本属性指定的值,不可更改。

2.4组定义

元素组是指把若干个元素组成一组。

<xsd:group name="组名称">

    <xsd: sequence>

        <xsd:element name="element1" type="datatype"/>

        <xsd:element name="element2" type="datatype"/>

…

    </xsd: sequence>

</xsd:group>

三、XML Schema中数据类型

1.简单类型

(simpleType来定义)

1.1restriction:

<xsd:schema

      <xsd:element name

            <xsd:simple Type name="name">

                <xsd: restriction base=" xsd: string">

                </xsd:restriction>

             </xsd:simpleType>

1.2list

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

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

<xsd:element name="myint">

    <xsd:simpleType>

        <xsd:list itemType="xsd:int"/>

    </xsd:simpleyType>

</xsd:element>

</xsd:schema>

注意:通过list定义了基于int数据类型的元素myint,允许用户输入多个数据,数据间需要用空白间隔。


1.3union

<?xml version="1.0"encoding="UTF-8"?><xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema">

<xsd:simpleType name=“myint1">

    <xsd:union>

         <xsd:simpleType><xsd:restriction base="xsd:int"/></xsd:simpleType>

          <xsd:simpleType><xsd:restriction base="xsd:string"/></xsd:simpleType>

<!一从多个匿名数据类型联合派生出产的数据类型-->

    </xsd:union>

<xsd:simpleType>

<xsd:simpleType name="myint2">

    <xsd:union memberTypes=“xsd:int xsd:string"/>

<!––直接从已有的数据类型联合派生新的数据类型-->

<\xsd:simpleType>

<xsd:all>

<xsd:element name=“myint" type=“myint1"/>

<xsd:element name=“mystring" type=“myint2"/><xsd:.ement

</xsd:all>

</xsd:complexType>

</xsd:element>

注意:上述用两种方式定义了union数据类型myint1和myint2,二者都可以包含int或string数据类型,但是只能使用其中一种。



2.复杂类型

(通过complexType来定义)

<xsd:element name="元素名称" type="数据类型">

<xsd:complex Type name=" ">

<xsd:sequence>

<xsd:attribute name=" " type=" " use=" ">

</xsd:sequence>

</xsd:complex Type>

</ xsd: element>

注意:

1)“元素名称”用于指明复杂类型元素的名称。

2)“数据类型”指自定义数据类型的名称。

3)<sequence>子元素表示在其定义范围内的所有元素都必须按顺序出现。除了<sequence>子元素外,其他可选的子元素如表所列,用于定义复杂类型所包含的内容模式。

总结:

1)当前元素只有属性:

attribute

2)当前元素只有子元素:

sequence

3)当前元素既有属性,又有子元素:

sequence、attribute

4)当前元素既有属性,又有文本数据:

simpleContent

5)当前元素既有属性,又有文本数据,又有子元素:

<complexType mixed="true>

四、XML S chema的名称空间

1.概念:

XML名称空间提供了一套简单的方法将XML文档和URI引用标记的名称相结合来限定其中的元素和属性名。即名称空间给XML名称添加前缀,使其能够区分所属的领域,从而为元素和属性提供唯一的名称,其主要用于融合不同词汇集的XML文档。

名称空间表示名称的来源和使用范围。通过名称空间可以区分不同的XML应用。但具有相同名称的标识,可以把来自某种XML应用的相关元素和属性集合在一起,以方便软件识别和处理。

名称空间通过给标识名称加一个网址(URL)定位的方法来区别同名的标识。但这不是一个真实的网址。

真实的网址是:

http://www.w3.org/2001/XMLShema

2.声明(一般用属性xmlns)

<元素名 xmlns:prefix="URL">

注意:

1)xmlns::名称空间属性名,是声明名称空间必需的属性。

2)prefix:指明名称空间的前缀名,它的值不能为XML。在引用此名称空间中的名称时,需要在名称前加该前缀名

声明时若前缀名省略,则声明的是默认的空间,引用默认名称空间中的元素和属性时可不加前缀名。

默认名称空间的声明语法格式如下:

<元素名 xmlns="URI">

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值