XML Schema复杂元素

      复杂元素按内容的复杂程度可以分简单内容元素(simpleContent)和复杂内容元素(complexContent)。simpleContent元素是指元素内容仅包括文本,不含子元素的复杂元素。

      一、simpleContent元素

      1、声明simpleContent元素

       simpleContent元素首先是一个复杂类型元素,声明一个元素为复杂类型元素需要用到complexType。约束一个复杂元素为simpleContent类型时,需要用simpleConten。

  1. <?xml version="1.0" encoding="UTF-8"?>
    <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
        <xs:element name="customer">
            <xs:complexType>
                <xs:simpleContent>
                    <xs:extension base="xs:string">
                        <xs:attribute name="id" type="xs:integer"/>
                        <xs:attribute name="type"type="xs:string"/>                
                    </xs:extension>
                </xs:simpleContent>        
            </xs:complexType>    
        </xs:element>
    </xs:schema>

      2、类型派生

      类型派生即自定义类型,是一种根据已有类型获得新类型的机制。类型派生的主要手段有约束(restriction)和扩展(extension)。

      约束派生是指通过对基类型的值或内容进行限定,从而得到新的类型。新类型的值是基类型值的子集。约束派生的基类型既可以是简单类型,也可以是复杂类型。对于简单类型,主要通过约束取值的方式进行派生。对于复杂类型,一般通过删除或限制属性,对内容求子集等方法。

  1. <xs:restriction base=”attrType”/>

      扩展派生是指通过对基类型的值或内容模型进行扩充,从而得到新的类型。扩展派生的基类型既可以是简单类型,也可以是复杂类型。不管是简单类型还是福州类型,一般都通过添加元素和属性等方法。

  1. <xs:extension base=”attrType”/>

     3、属性声明

  1. <xs:attribute name=”attrName” type=”attrType”/>

     4、使用use自定义属性

  1. <xs:attribute name=”attrName” type=”attrType” use=”required/optional/prohibited”/>

       value值可以是required、optional或prohibited。required代表该属性必须存在于xml文档中。optional代表该属性可以存在也可以不存在于xml文档中;prohibited则代表该属性不可以出现在xml文档中.

       5、默认值(default)

       default用来给属性赋予默认值,该默认值不同于元素的默认值。属性的默认值只在属性未出现在xml文档中时起作用。当属性为在xml实例文档出现时,处理器将把属性的值视为default选项所设定的值。处理器只是在验证时将属性的值视为默认值进行验证,并不更改xml文档的内容。

  1. <xs:attribute name=”attrName” type=”attrType” default=”default”/>

       6、固定值(fixed)

  1. <xs:attribute name=”attrName” type=”attrType” fixed=”fixedValue”/>

       二、complexContent元素

       1、声明complexContent

       complexContent内向仅包含子元素,不允许出现文本数据。complexContent类型一般有anyType约束派生而来的,可以省略<xs:complexContent>和<xs:restriction base=”xs:anyType”>.

       2、子元素的顺序

       all、sequence和choice用来指示元素的顺序。<xs:all>指定子元素在其父元素中出现时,顺序任意,但每种子元素最多只能出现一次。<xs:sequence>用于指定子元素在其父元素中出现时,顺序必须跟Sch定义的一致。<xs:choice>用于指定在多种子元素中,只能出现一种。<xs:sequence>和<xs:choice>可以嵌套。

      3、元素出现的次数

  1. <xs:element name=”eleName” type=”eleType” minOccurs=”min” maxOccurs=”max”/>

       minOccurs定义元素最少出现次数,最小值为0;maxOccurs定义最多出现的次数,最大可以为unbounded,表示不限制出现册次数。

       三、特殊复杂类型

      1、anyType

      anyType是任意类型,对其进行扩展仍为任意类型。

      2、空元素

      不含属性的空元素:

  1. <?xml version="1.0" encoding="UTF-8"?>
    <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
        <xs:element name="example">
            <xs:complexType>
                <xs:complexContent>
                    <xs:extension base="xs:anyType"/>
                </xs:complexContent>        
            </xs:complexType>    
        </xs:element>
    </xs:schema>

     含属性的空元素:

  1. <?xml version="1.0" encoding="UTF-8"?>
    <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
        <xs:element name="example">
            <xs:complexType>
                    <xs:extension base="xs:string">
                        <xs:attribute name="id" type="xs:integer"/>
                        <xs:attribute name="type"type="xs:string"/>                
                    </xs:extension>
            </xs:complexType>    
        </xs:element>
    </xs:schema>

转载于:https://www.cnblogs.com/zhaozhan/archive/2010/01/08/1642677.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值