XML Schema 复合元素

XML Schema 复合元素包含了其它的元素及/或属性

什么是复合元素 ?

复合元素指包含其它元素及/或属性的 XML 元素

有四种类型的复合元素

  1. 空元素
  2. 包含其他元素的元素
  3. 仅包含文本的元素
  4. 包含元素和文本的元素

上述元素均可包含属性

范例

下面的 XML Schema 复合元素,"product",是空的

<product pid="1345"/>

下面的 XML Schema 复合元素,"employee",仅包含其它元素

<employee>
    <firstname>John</firstname>
    <lastname>Smith</lastname>
</employee>

下面的 XML Schema 复合 XML 元素,"food" 仅包含文本

<food type="dessert">Ice cream</food>

下面的 XML Schema 复合元素,"description" 包含元素和文本

<description>It happened on <date lang="norwegian">03.03.99</date> ....</description>

如何定义复合元素?

我们先来看看下面这个 XML Schema 复合 XML 元素,"employee",仅包含其它元素

<employee>
    <firstname>John</firstname>
    <lastname>Smith</lastname>
</employee>

在 XML Schema 中,我们有两种方式来定义复合元素

  1. 通过命名此元素,可直接对 "employee" 元素进行声明

    <xs:element name="employee">
        <xs:complexType>
            <xs:sequence>
                <xs:element name="firstname" type="xs:string"/>
                <xs:element name="lastname" type="xs:string"/>
            </xs:sequence>
        </xs:complexType>
    </xs:element>
    

    如果我们使用上面所描述的方法,那么仅有 "employee" 可使用所规定的复合类型

    请注意其子元素,"firstname" 以及 "lastname",被包围在指示器 <sequence>中

    这意味着子元素必须以它们被声明的次序出现

    我们可以在 XML Schema 指示器 章节中学习到更多有关指示器的知识

  2. "employee" 元素可以使用 type 属性,这个属性的作用是引用要使用的复合类型的名称

    <xs:element name="employee" type="personinfo"/>
    <xs:complexType name="personinfo">
        <xs:sequence>
            <xs:element name="firstname" type="xs:string"/>
            <xs:element name="lastname" type="xs:string"/>
        </xs:sequence>
    </xs:complexType>
    

    如果我们使用了上面所描述的方法,那么若干元素均可以使用相同的复合类型

    <xs:element name="employee" type="personinfo"/>
    <xs:element name="student" type="personinfo"/>
    <xs:element name="member" type="personinfo"/>
    <xs:complexType name="personinfo">
        <xs:sequence>
            <xs:element name="firstname" type="xs:string"/>
            <xs:element name="lastname" type="xs:string"/>
        </xs:sequence>
    </xs:complexType>
    

    我么也可以在已有的复合元素之上以某个复合元素为基础,然后添加一些元素

    <xs:element name="employee" type="fullpersoninfo"/>
    <xs:complexType name="personinfo">
        <xs:sequence>
            <xs:element name="firstname" type="xs:string"/>
            <xs:element name="lastname" type="xs:string"/>
        </xs:sequence>
    </xs:complexType>
    <xs:complexType name="fullpersoninfo">
        <xs:complexContent>
            <xs:extension base="personinfo">
                <xs:sequence>
                    <xs:element name="address" type="xs:string"/>
                    <xs:element name="city" type="xs:string"/>
                    <xs:element name="country" type="xs:string"/>
                </xs:sequence>
            </xs:extension>
        </xs:complexContent>
    </xs:complexType>
    
关于   |   FAQ   |   我们的愿景   |   广告投放   |  博客

  简单教程,简单编程 - IT 入门首选站

Copyright © 2013-2022 简单教程 twle.cn All Rights Reserved.