XML

XML 知识量:7 - 28 - 99

4.4 XML Schema的声明><

简单类型元素的声明- 4.4.1 -

简单类型元素是指元素既没有子元素,也没有属性,其声明的语法为:

<xs:element name="元素名称" type="数据类型" minOccurs="最少出现的次数" maxOccurs="最多出现的次数" default="默认值" fixed="固定值" ref="参考已定义的元素">

其中:

  • element元素用于声明元素,name属性指明要声明的XML元素的名称。

  • type属性指明该XML元素的数据类型,取值可以为基本数据类型和内置派生数据类型,也可以是由simpleType或complexType元素所声明的自定义数据类型。

  • minOccurs属性指明在XML文档中元素最少出现的次数,取值最小为0,默认为1。

  • maxOccurs属性指明在XML文档中元素最多出现的次数,取值最小为1,最大为unbounded(无限多次),默认为1。

  • default属性指明元素的默认值。

  • fixed属性指明元素的固定值,注意:fixed与default不能同时存在。

  • ref属性指明元素参考已定义的元素。

复杂类型元素的声明- 4.4.2 -

复杂类型元素是指拥有子元素或属性的元素,需要使用complexType元素声明其子元素的名称和数据类型,使用attribute元素声明其属性。复杂类型元素声明的语法为:

<xs:element name="元素名称">
    <xs:complexType>
        <xs:sequence>
            <xs:element name="子元素1名称" type="数据类型"/>
            <xs:element name="子元素2名称" type="数据类型"/>
            ......
        </xs:sequence>
    </xs:complexType>
</xs:element>

其中:

  • 第一行element元素的name属性指明要声明的复杂类型元素的名称,其子元素complexType指明第一行element所声明的元素的数据类型是复杂类型元素。

  • sequence元素是complexType元素的子元素,用于声明在XML文档中子元素的出现顺序。

  • sequence元素中的子元素,即各element元素描述了子元素的名称和数据类型,也定义了出现的顺序。

除了使用sequence元素定义子元素出现的顺序外,在complexType元素的子元素中还可以使用一些子元素来定义XML元素,使得XML结构更加灵活。如下表所示:

子元素说明
all定义XML所有子元素可以按任何顺序出现
sequence定义XML子元素只能按规定的顺序出现
choice定义XML子元素只能选择其中之一
group将子元素分组,使之更有条理。
simpleContent没有XML子元素,只有数据内容和属性。
complexContent只有XML子元素和属性,没有数据内容。

属性声明- 4.4.3 -

声明属性的语法为:

<xs:element name="元素名称">
    <xs:complexType>
        <xs:attribute name="属性名称" type="数据类型" use="optional|required|prohibited" default="默认值" fixed="固定值"/>
    </xs:complexType>
</xs:element>

其中:

  • 简单类型数据没有属性,attribute元素只能出现在complexType元素中。

  • attribute元素用来声明属性,type表示属性的数据类型,取值可以为基本数据类型和内置派生数据类型,也可以是由simpleType所声明的自定义数据类型。

  • use属性指明XML文档中属性的使用方式。取值optional表示该属性可有可无,是默认值;required表示属性是必须的;prohibited表示不能使用该属性,用于在restriction元素中限制属性的使用。

  • default属性指明属性的默认值。

  • fixed属性指明属性的固定值,注意:fixed与default不能同时存在。