`

XSD 复合元素

 
阅读更多

什么是复合元素?

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

有四种类型的复合元素:

  • 空元素
  • 包含其他元素的元素
  • 仅包含文本的元素
  • 包含元素和文本的元素

注释:上述元素均可包含属性!

复合元素的例子

复合元素,"product",是空的:

<product pid="1345"/>

复合元素,"employee",仅包含其他元素:

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

复合元素,"food",仅包含文本:

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

复合元素,"description",包含元素和文本:

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

如何定义复合元素?

请看这个复合 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>中。这意味着子元素必须以它们被声明的次序出现。您会在 XSD 指示器 这一节学习更多有关指示器的知识。

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
分享到:
评论

相关推荐

    XML Schema(XSD)简明教程高清pdf

    #### 第7讲:XSD复合元素 - **复合元素**:指包含其他子元素的元素,通常使用`&lt;xs:complexType&gt;`标签定义。 - 示例说明如何定义包含多个子元素的复合元素。 #### 第8讲:XSD复合空元素 - **复合空元素**:复合元素...

    XML_Schema 教程 详细版

    #### 八、XSD复合元素 复合元素可以包含其他元素和/或文本。在XSD中,复合元素通常使用`&lt;complexType&gt;`定义,可以通过`complexContent`和`restriction`元素进行扩展或限制。 #### 九、XSD复合空元素 复合空元素是...

    xml-wsdl基础知识

    **3.1 XSD复合元素** - **3.1.1 什么是复合元素?** - 复合元素是指包含了其他元素和/或文本内容的元素。 - **3.1.2 复合元素的例子** - 一个典型的例子是一个订单元素,它可能包含了客户信息、产品列表等多个子...

    Schema教材

    **XSD 复合元素** - `复合元素`可以包含其他元素或混合内容,它们用于构建更复杂的文档结构。 - `复合空元素`指没有子元素但可能包含文本的元素。 - `仅含元素的复合类型`只包含其他元素,不包含文本。 - `仅含文本...

    xml schema 教程

    #### XSD 仅含文本复合元素 此类元素包含文本内容,但不含任何子元素。例如: ```xml ``` #### XSD 带有混合内容的复合类型 混合内容是指元素既可以包含文本也可以包含子元素。例如: ```xml ...

    XML系列教程之二:XML_Sshema教程

    XSD 仅含文本复合元素 - **定义**: 这类复合元素仅包含文本内容,不包含子元素。 - **示例**: ```xml ``` - **特点**: - 适用于简单的文本数据。 #### 12. XSD 带有混合内容的复合类型 - **定义**:...

    XML应用开发(软件品牌)-1期 3.7 案例分析-复杂类型-声明复合元素.doc

    在 `directComplexElement.xsd` 文件中,`Book` 元素被直接声明为包含 `BookName` 和 `BookAuthor` 的复合元素。合法的 XML 实例如下: ```xml &lt;BookName&gt;XML案例教程 眭碧霞 ``` 案例 2 使用复合类型声明复合...

    如何定义Xsd文件及XSD的解释

    此外,还可以使用`&lt;xs:complexType&gt;`定义包含其他元素或属性的复合类型。 6. **元素的顺序和数量**: 使用`&lt;xs:sequence&gt;`定义元素出现的顺序,`&lt;xs:all&gt;`表示元素可以按任意顺序出现,`&lt;xs:choice&gt;`表示元素可以...

    xsd文件规则和语法

    - **`&lt;xs:element&gt;`**:定义复合类型的子元素。 ##### 6. 混合内容的自定义类型 ```xml ``` - **`mixed="true"`**:允许混合内容,即文本和子元素可以混杂在一起。 ### 四、示例应用 以下是一个...

    XML应用开发(软件品牌)-1期 3.8 课堂实践-复杂类型-复合元素ref引用与属性定义.doc

    1. **复合元素**:在XML Schema中,复合元素是指包含其他元素或属性的元素。它们可以是简单(仅包含文本)或复杂(包含其他元素和/或属性)。例如,在描述员工(`employee`)的XML文档中,`employee`元素可能包含`...

    XML应用开发(软件品牌)-1期 3.8 案例分析-复杂类型-复合元素ref引用与属性定义.doc

    2. **复合元素**:复合元素可以包含其他元素或属性,它们更复杂,比简易元素(只包含文本内容)有更多的结构。 3. **属性定义**:属性总是作为简易类型被声明,比如 `type="xs:string"`。属性的定义格式是 `...

    Schema文档1

    - `&lt;xsd:complexType&gt;`定义了复合类型的结构,允许组合简单的类型和复杂的元素。 - `&lt;xsd:sequence&gt;`定义了一组按顺序出现的元素,这里的`&lt;xsd:sequence&gt;`包含了一个名为“学生”的元素,该元素可以出现任意多次(`...

    xmlShema案例

    复合类型是指包含多个元素或属性的复杂结构,如果每个元素都需要独立定义,会导致代码重复,不易维护。在大型复杂的XML文档结构中,这种模式可能导致编码效率低下且易出错。 接下来是“黄瓜切片”模式。在这种模式...

    SN3SN3SN3考试题

    5. Suzanne想要创建一个名为"Name"的复合类型,包含"FIRSTNAME"和"LASTNAME"元素,且它们可以以任意顺序出现。为此,她应该使用`&lt;xsd:all&gt;`元素,因为它允许子元素在没有特定顺序的情况下出现。所以正确答案是a. `...

    xml schema实例

    在本实例中,我们将探讨XML Schema的使用,包括简单类型、复合类型、元素定义以及属性定义。 首先,我们来看**简单类型**。XML Schema中的简单类型是对基本数据类型的扩展或限制。例如,我们可以定义一个名为`...

    webservice soap wsdl

    `&lt;message&gt;` 消息中的 `&lt;part&gt;` 元素可以使用 XML Schema 内置类型、复合类型、或者 `&lt;types&gt;` 中定义的元素,也可以使用通过 `&lt;import&gt;` 元素链接的外部 WSDL 元素定义的类型。此外,还能描述 SOAP 头的内容,以及...

    XML学习笔记

    例如,在下面的示例中,“书本”是一个复合类型元素,它包含了两个子元素:“名称”和“作者”,这两个子元素都是简单类型。 ```xml &lt;书本&gt; &lt;名称&gt;书剑恩仇录名称&gt; &lt;作者&gt;金庸作者&gt; 书本&gt; ``` 对于上面的例子,...

    NIIT试题

    - **复合类型中的`xsd:all`和`xsd:sequence`元素**分别用来定义元素是否可以按任意顺序出现以及元素出现的固定顺序。 **例题分析:** 对于第五个问题,“Suzanne要创建包含“FIRSTNAME”和“LASTNAME”元素的名为...

    XML的schema部分代码

    4. **复杂类型定义**:除了基本数据类型,XML Schema还支持创建复杂的元素结构,如组合其他元素或属性的复合类型,以及具有嵌套元素和属性的复杂类型。 5. **引用和继承**:可以通过引用已定义的元素和属性,以及...

    微软内部XML培训课件3

    例如,定义一个`book`元素,它包含一个字符串类型的`title`,一个复合类型的`author`,和一个浮点类型的`price`: ```xml &lt;!-- author 的详细结构 --&gt; ``` 在.NET框架中,开发者可以...

Global site tag (gtag.js) - Google Analytics