`
marb
  • 浏览: 410772 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

schema学习系列三: schema中的复杂元素

XML 
阅读更多

如何定义复合元素?

请看这个复合 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>																
 
分享到:
评论

相关推荐

    关于Schema

    掌握在XML Schema中如何定义元素和属性,如何使用限制、列表和合并派生自己的简单数据类型,如何定义复杂数据类型,全局/局部元素和数据类型之间的区别;如何将XML Schema文档关联到XML实例数据文档,并完成文档的...

    XML - 实验(2) -- Schema

    掌握在XML Schema中如何定义元素和属性,如何使用限制、列表和合并派生自己的简单数据类型,如何定义复杂数据类型,全局/局部元素和数据类型之间的区别;如何将XML Schema文档关联到XML实例数据文档,并完成文档的...

    《XML》实验(2) -- Schema

    掌握在XML Schema中如何定义元素和属性,如何使用限制、列表和合并派生自己的简单数据类型,如何定义复杂数据类型,全局/局部元素和数据类型之间的区别;如何将XML Schema文档关联到XML实例数据文档,并完成文档的...

    武汉大学软工xml上机第二次作业Schema

    掌握在XML Schema中如何定义元素和属性,如何使用限制、列表和合并派生自己的简单数据类型,如何定义复杂数据类型,全局/局部元素和数据类型之间的区别;如何将XML Schema文档关联到XML实例数据文档,并完成文档的...

    Schema 语法.xmind

    很多JAVA框架,都会用XML文件作为配置文件,而XML文件往往对元素都有严格的定义,这...本文件是对XML Schema语法学习整理的思维导图,包括如果定义和使用schema文件,shcema语法中的简单类型、复杂类型的定义和使用等。

    XML Schema初窥

    • 了解XML Schema推荐标准 • 掌握XML Schema和DTD的区别 • 掌握元素和属性的声明 • 理解元素和属性的类型 • 掌握简单类型和复杂类型的定义 • 掌握模式与名称空间 • 掌握在实例中引用模式文档 • 了解注解 • ...

    《XML》实验任务书 XML Schema 答案 解答

    掌握在XML Schema中如何定义元素和属性,如何使用限制、列表和合并派生自己的简单数据类型,如何定义复杂数据类型,全局/局部元素和数据类型之间的区别;如何将XML Schema文档关联到XML实例数据文档,并完成文档的...

    schema-stitching-handbook:探索GraphQL Tools v6 + Schema Stitching的指导示例

    @canonical指令用于首选元素定义。 建筑 热重载组合的网关架构(不重新启动服务器)。 轮询远程子模式更改。 用于添加/删除远程子服务的突变。 处理子服务请求超时。 使用GitHub API管理简单的架构注册表。 从...

    xml入门教程/xml入门教程

    2.xml文件是由元素和元素的内容以及属性组成的,一个xml文件中只能有一个根元素,标签和标签的内容加在一起叫作一个元素。xml是大小写 敏感的,只能以字母或下划线开头。 字符转义 &lt; 代表 ", &gt; 代表 "&gt;" , &...

    mongoose-history-log:将事件集合添加到架构

    猫鼬历史日志 将事件集合添加到架构 用法 模式设置: var mongoose = require ( ... meta属性允许您将任意复杂的对象附加到history元素上。 首次保存文档时,它将自动在当前时间添加一个{ status : "created" }记录。

    XML轻松学习手册--XML肯定是未来的发展趋势,不论是网页设计师还是网络程序员,都应该及时学习和了解

    你要在DTD中定义一个元素,然后在XML文档中使用。元素的定义语法为:&lt;!ELEMENT DESCRIPTION (#PCDATA, DEFINITION)*&gt; 说明: "&lt;!ELEMENT" 是元素的声明,说明你要定义的是一个元素; 声明后面的"DESCRIPTION",...

    nuxeo-schema-dot-org

    虽然我们可以在我们自己的 Nuxeo 存储库中定义自定义词汇表,但它会与 Schema.org 定义的元数据元素显着重叠。 和元素是 Courseload 跟踪的特别重要的概念。 由于每个人都可以从使用相同的术语集来描述相同的对象中...

    Hibernate中文详细学习文档

    20.1. Schema自动生成(Automatic schema generation) 20.1.1. 对schema定制化(Customizing the schema) 20.1.2. 运行该工具 20.1.3. 属性(Properties) 20.1.4. 使用Ant(Using Ant) 20.1.5. 对schema的增量...

    用JAXB生成一个XML

    用JAXB的xjc生成的Java类代表了在XML模式中不同的元素和复杂类型(complexType)。(一个复杂类型通过指定属性和元素内的元素来提供对一个元素的限定)。一个符合XML模式的XML文档可以从这些Java类中构建出来。 在这...

    XQuery权威指南(简码·扫描版)

     5.1 包含输入文件中的元素和属性  5.2 直接元素构造器  5.3 计算构造器 第6章 使用FLWOR表达式查询和连接  6.1 使用路径表达式查询  6.2 FLWOR表达式  6.3 量化表达式  6.4 选择不同的值  6.5 连接 第7章 ...

    jpivot学习总结.doc

    foreignKey 外键,对应事实表中的一个列,它通过 &lt;Hierarchy&gt; 元素中的主键属性连接起来。 3.4. Hierarchy 你一定要指定其中的各种关系 , 如果没有指定 , 就默认 Hierarchy 里面装的是来自立方体中的真实表 . ...

    Hibernate 中文 html 帮助文档

    20.1. Schema自动生成(Automatic schema generation) 20.1.1. 对schema定制化(Customizing the schema) 20.1.2. 运行该工具 20.1.3. 属性(Properties) 20.1.4. 使用Ant(Using Ant) 20.1.5. 对schema的增量更新...

    电力系统信息的XML描述

    把可扩展标记语言(XML)应用于电力系统中,利用其...声明一个元素名为Substation的用户自定义的复杂数据类型,并通过嵌入复杂数据类型的定义实现用户自定义的复杂数据类型;声明一个Transformer元素;各个独立子元素的声明。

    Hibernate+中文文档

    20.1. Schema自动生成(Automatic schema generation) 20.1.1. 对schema定制化(Customizing the schema) 20.1.2. 运行该工具 20.1.3. 属性(Properties) 20.1.4. 使用Ant(Using Ant) 20.1.5. 对schema的增量...

Global site tag (gtag.js) - Google Analytics