<xsd:complexType> 元素

定义一个确定特性集和元素内容的复杂类型。

<complexType
  abstract = Boolean : false 
  block = (#all | List of (extension | restriction))
  final = (#all | List of (extension | restriction))
  id = ID 
  mixed = Boolean : false
  name = NCName 
  {any attributes with non-schema Namespace...}>
Content: (annotation?, (simpleContent | complexContent | ((group | all | 
choice | sequence)?, ((attribute | attributeGroup)*, anyAttribute?))))
</complexType>

特性

  • abstract
    一个指示器,指示在实例文档中是否可以使用复杂类型。 如果该值为 true,则元素不能直接使用该复杂类型,而是必须使用从该复杂类型派生的复杂类型。 默认值为 false

    可选。

  • block
    派生的类型。 block 属性防止具有指定派生类型的复杂类型被用来替代该复杂类型。 该值可以包含 #all 或者一个列表,该列表是 extension 或 restriction 的子集。 仅当验证期间实例文档通过使用 schema-instance:type 属性重写元素的普通类型时,才使用 block 属性。 block 属性能够防止元素选择复杂类型,这些复杂类型通过扩展和/或限制进行定义以替代为该元素指定的原始类型。

    扩展

    防止通过扩展派生的复杂类型被用来替代该复杂类型。

    限制

    防止通过限制派生的复杂类型被用来替代该复杂类型。

    #all

    防止所有派生的复杂类型被用来替代该复杂类型。

    可选。

  • final
    派生的类型。 final 属性防止从该 complexType 元素派生指定的类型。 该值可以包含 #all 或者一个列表,该列表是 extensionrestriction 的子集。

    扩展

    防止通过扩展派生。

    限制

    防止通过限制派生。

    #all

    防止所有派生(扩展和限制)。

    可选。

  • id
    该元素的 ID。 id 值必须属于类型 ID 并且在包含该元素的文档中是唯一的。

    可选。

  • 混合的
    一个指示符,指示是否允许字符数据出现在该复杂类型的子元素之间。 默认值为 false

    如果 simpleContent 元素是子元素,则不允许 mixed 属性。

    如果 complexContent 元素是子元素,则该 mixed 属性可被 complexContent 元素的 mixed 属性重写。

    可选。

  • name
    类型的名称。 该名称必须是在 XML 命名空间规范中定义的无冒号名称 (NCName)。

    如果包含元素是 schema 元素,则为必选项;否则将被禁止。

    如果指定,该名称在所有 simpleTypecomplexType 元素之间必须是唯一的。

    可选。

元素信息

出现次数

在架构内为无限制;在元素内为一次。

父元素

elementredefineschema

内容

annotationsimpleContentcomplexContentgroupallchoicesequenceattributeattributeGroupanyAttribute

备注

复杂类型实质上是对可以包含属性和元素的元素的类型定义。 一个元素可以由引用 complexType 元素(定义该元素的结构、内容和属性)的 type 属性声明。 (一个元素还可以在其 type 属性中接受对 simpleType 的引用。)

一个复杂类型可以包含以下元素中的一个元素且只能包含一个元素,该元素确定在复杂类型中允许的内容类型。

元素

描述

simpleContent

该复杂类型具有字符数据或将 simpleType 作为内容并且不包含任何元素,但可以包含属性。

complexContent

该复杂类型只包含元素或不包含任何元素内容(空)。

该复杂类型包含在引用组中定义的元素。

Sequence — 序列

该复杂类型包含在指定序列中定义的元素。

choice

该复杂类型允许在选项元素中指定的元素之一。

所有

该复杂类型允许在所有元素中指定的任意或所有元素出现一次。

如果 groupsequencechoiceall 被指定为子元素,则可以选择使用以下元素声明 complexType 的属性。

元素

描述

属性

该复杂类型包含指定的属性。

attributeGroup

该复杂类型包含在引用的 attributeGroup 中定义的属性。

anyAttribute

该复杂类型可以包含来自指定命名空间的任何属性。

可以使用任何数目的 attributeattributeGroup 元素。 还可以使用 anyAttribute 的一个实例。

如果指定 groupsequencechoiceall,则元素必须按以下顺序出现。

  1. | Sequence — 序列 | choice | 所有

  2. 属性 | attributeGroup

  3. anyAttribute

示例

以下示例说明包含简单类型 (decimal) 的复杂类型,它具有使用复杂类型的属性和元素声明。

<xs:complexType name='internationalShoeSize'>
 <xs:simpleContent>
  <xs:extension base='xs:decimal'>
   <xs:attribute name='sizing' type='xs:string' />
  </xs:extension>
 </xs:simpleContent>
</xs:complexType>
<xs:element name='myShoeSize' type='internationalShoeSize'/>

以下示例说明在 XML 文档内的 myShoeSize 元素的实例。

<myShoeSize sizing='UK'>10.5</myShoeSize>

以下示例说明 myShoeSize 元素,在该元素内以匿名方式定义了 complexType。 (请注意,缺少 name 特性。)

<xs:element name='myShoeSize'>
 <xs:complexType>
  <xs:simpleContent>
   <xs:extension base='xs:decimal'>
     <xs:attribute name='sizing' type='xs:string' />
   </xs:extension>
  </xs:simpleContent>
 </xs:complexType>
</xs:element>

请参见

参考

XML 架构 (XSD) 参考

XML 架构元素