对于xsd,复合元素的定义有两种方式:

一、在元素内部直接声明,此种方法只能此元素使用

<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>

二、以单独类型进行声明,此种方法,类型可以在多个元素共享

<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>

xsd有四种类型的复合元素,下边我们学习每种元素的定义

一、空元素

<product pid="1345"/>

上述元素,没有包含子内容,仅包含一个属性,声明方式为:

<xs:element name="product">
<xs:complexType>
<xs:attribute name="pid" type="xs:positiveInteger"/>
</xs:complexType>
</xs:element>

二、包含其他元素的元素

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

上边内容仅包含两个子元素,没有属性,声明方式为:

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

三、仅包含文本的元素(这个其实不是特别明白)

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

此元素为单独空白文本,应该为简单类型,需要使用simpleContent进行声明,但不是特别明白为何作为复合类型使用,不知道是不是因为有属性的原因,声明方式为:

<xs:element name="food">
<xs:complexType>
<xs:simpleContent>
<xs:extension base="xs:string">
<xs:attribute name="dessert" type="xs:string" />
</xs:extension>
</xs:simpleContent>
</xs:complexType>
</xs:element>

四、包含元素和文本的元素

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

为了使字符数据可以出现在 "description" 的子元素之间,mixed 属性必须被设置为 "true",<xs:sequence>中的属性需要依次出现

<xs:element name="description">
<xs:complexType mixed="true">
<xs:sequence>
<xs:element name="norwegian" type="xs:string"/>
</xs:sequence>
</xs:complexType>
</xs:element>

注意:以上每种元素都可以包含属性

 

[xsd学习]复合元素的更多相关文章

  1. XSD详解三 - 复合元素+总结篇

    一.复合元素介绍 1.什么是复合元素? 复合元素指包含其他元素及/或属性的 XML 元素. 有四种类型的复合元素: 空元素 包含其他元素的元素 仅包含文本的元素 包含元素和文本的元素 注释:上述元素均 ...

  2. [xsd学习]xsd实例

    以下为一个表示学校的xml文件,学校内有若干学生,每个学生都有基本信息,电脑信息,选课信息 <?xml version="1.0" encoding="UTF-8& ...

  3. [xsd学习]xsd基本要素

    一.xsd常用数据格式 xs:string xs:decimal xs:integer xs:boolean xs:date xs:time 二.简易元素 <xs:element name=&q ...

  4. Selenium webdriver 学习总结-元素定位

    Selenium webdriver 学习总结-元素定位 webdriver提供了丰富的API,有多种定位策略:id,name,css选择器,xpath等,其中css选择器定位元素效率相比xpath要 ...

  5. 设计模式学习--复合模式(Compound Pattern)

    设计模式学习--复合模式(Compound Pattern) 概述 ——————————————————————————————————————————————————— 2013年8月4日<H ...

  6. jQuery学习之------元素样式的操作

    jQuery学习之------元素样式的操作 一..addClass( className )方法----增加样式 1.addClass( className ) : 为每个匹配元素所要增加的一个或多 ...

  7. [xsd学习]xsd元素限定

    限定(restriction)用于为 XML 元素或者属性定义可接受的值 一.xsd中主要限定格式如下: <xs:element name="xxx"><!--元 ...

  8. [xsd学习]xsd介绍

    一直以来项目中对xml格式的判断使用的都是dtd格式,直到最近才发现,不知何时都已经转为xsd来进行判断和校验,于是今天专门找资料看下,不得不说,对于这类资料的入门,w3cschool真是个不错的资料 ...

  9. robot framework学习二-----元素定位

    文章摘自:https://www.cnblogs.com/fnng/p/3901391.html 不要误认为Robot framework 只是个web UI测试工具,更正确的理解Robot fram ...

随机推荐

  1. 【leetcode】 Scramble String (hard)★

    Given a string s1, we may represent it as a binary tree by partitioning it to two non-empty substrin ...

  2. [C#]Datatable和json互相转换操作

    #region DataTable 转换为Json字符串实例方法 /// <summary> /// GetClassTypeJosn 的摘要说明 /// </summary> ...

  3. Oracle、SQL Server、MySQL分页方法

    测试用例:查询TEST_TABLE表中TEST_COLUMN列的第10-20条数据 1,Oracle分页方法 SELECT A.* FROM ( SELECT ROWNUM ROWNO, B.* FR ...

  4. SQL Server多表多列更新

    student表: lag表: 要求将student表stu_id列为1的stu_nick列和stu_phont列的数据更新为lag表的lag_nick列和lag_phone列. SQL语句: upd ...

  5. 消息队列MQ - Apache ActiveMQ

    Apache ActiveMQ是Apache软件基金会所研发的开放源码消息中间件:由于ActiveMQ是一个纯Jave程式,因此只需要操作系统支持Java虚拟机,ActiveMQ便可执行. 1.que ...

  6. FragmentHelper

    package com.icitymobile.anda.util; import java.lang.ref.SoftReference; import java.util.ArrayList; i ...

  7. Jquery.Datatables 基本创建方法

    基本创建 <!--定义操作列按钮模板--> <script id="tpl" type="text/x-handlebars-template" ...

  8. MongoDB增删查改

    1.insert db.Customers.insert({ "DateTest":new Date(), "IntTest":32, "Double ...

  9. ASP.NET Web API 数据验证

    第一种方式单独为每一个Action做验证 // POST api/values public HttpResponseMessage Post([FromBody]UserInfo userInfo) ...

  10. Delphi的TThread中的FreeOnTerminate成员

    类 Create 了就要 Free;  但 TThread(的子类) 有特殊性, 很多时候我们不能确定新建的线程什么时候执行完(也就是什么时候该释放);  如果线程执行完毕自己知道释放就好了, 所以 ...