定义一个确定特性集和元素内容的复杂类型。
<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 属性能够防止元素选择复杂类型,这些复杂类型通过扩展和/或限制进行定义以替代为该元素指定的原始类型。extension
防止通过扩展派生的复杂类型被用来替代该复杂类型。
restriction
防止通过限制派生的复杂类型被用来替代该复杂类型。
#all
防止所有派生的复杂类型被用来替代该复杂类型。
可选。
final
派生的类型。 final 属性防止从该 complexType 元素派生指定的类型。 该值可以包含 #all 或者一个列表,该列表是 extension 或 restriction 的子集。extension
防止通过扩展派生。
restriction
防止通过限制派生。
#all
防止所有派生(扩展和限制)。
可选。
id
该元素的 ID。 id 值必须属于类型 ID 并且在包含该元素的文档中是唯一的。可选。
mixed
一个指示符,指示是否允许字符数据出现在该复杂类型的子元素之间。 默认值为 false。如果 simpleContent 元素是子元素,则不允许 mixed 属性。
如果 complexContent 元素是子元素,则该 mixed 属性可被 complexContent 元素的 mixed 属性重写。
可选。
name
类型名称。 该名称必须是在 XML 命名空间规范中定义的无冒号名称 (NCName)。如果包含元素是 schema 元素,则为必选项;否则将被禁止。
如果指定,该名称在所有 simpleType 和 complexType 元素之间必须是唯一的。
可选。
元素信息
出现次数 |
在架构内为无限制;在元素内为一次。 |
父元素 |
|
内容 |
annotation、simpleContent、complexContent、group、all、choice、sequence、attribute、attributeGroup、anyAttribute |
备注
复杂类型实质上是对可以包含属性和元素的元素的类型定义。 一个元素可以由引用 complexType 元素(定义该元素的结构、内容和属性)的 type 属性声明。 (一个元素还可以在其 type 属性中接受对 simpleType 的引用。)
一个复杂类型可以包含以下元素中的一个元素且只能包含一个元素,该元素确定在复杂类型中允许的内容类型。
元素 | 说明 |
---|---|
simpleContent |
该复杂类型具有字符数据或将 simpleType 作为内容并且不包含任何元素,但可以包含属性。 |
complexContent |
该复杂类型只包含元素或不包含任何元素内容(空)。 |
group |
该复杂类型包含在引用组中定义的元素。 |
sequence |
该复杂类型包含在指定序列中定义的元素。 |
choice |
该复杂类型允许在选项元素中指定的元素之一。 |
all |
该复杂类型允许在所有元素中指定的任意或所有元素出现一次。 |
如果 group、sequence、choice 或 all 被指定为子元素,则可以选择使用以下元素声明 complexType 的属性。
元素 | 说明 |
---|---|
attribute |
该复杂类型包含指定的属性。 |
attributeGroup |
该复杂类型包含在引用的 attributeGroup 中定义的属性。 |
anyAttribute |
该复杂类型可以包含来自指定命名空间的任何属性。 |
可以使用任何数目的 attribute 或 attributeGroup 元素。 还可以使用 anyAttribute 的一个实例。
如果指定 group、sequence、choice 或 all,则元素必须按以下顺序出现。
group | sequence | choice | all
attribute | attributeGroup
anyAttribute
示例
以下示例说明包含简单类型 (decimal) 的复杂类型,它具有使用复杂类型的属性和元素声明。
以下示例说明在 XML 文档内的 myShoeSize 元素的实例。
以下示例说明 myShoeSize 元素,在该元素内以匿名方式定义了 complexType。 (请注意,缺少 name 特性。)