XSD中complexType用于定义含子元素、属性或二者的XML元素结构,支持sequence/all/choice内容模型、mixed内容、属性声明及命名复用。

在XSD中定义一个复杂类型(complexType),是为了描述包含子元素、属性或两者兼有的XML元素结构。复杂类型不能仅由文本构成,它允许你构建具有层级结构的数据模型。
1. 基本语法结构
使用
示例:
2. 复杂类型可包含的组成部分
一个 complexType 可以包含以下内容:
- 元素内容(Element-only content):只包含子元素,例如上面的 person 包含 firstName 和 lastName。
- 混合内容(Mixed content):允许文本和子元素混合出现,通过设置 mixed="true" 实现。
- 仅文本内容 + 属性:可以包含简单文本内容并附加属性。
- 空元素 + 属性:元素本身无内容,但可以有属性。
3. 内容模型(Content Model)
使用不同的模型来组织子元素:
-
:子元素必须按指定顺序出现。 -
:子元素可以以任意顺序出现,但每个最多出现一次。 -
:从多个子元素中选择一个出现。
还可以为元素设置出现次数,如 minOccurs 和 maxOccurs:
4. 添加属性(Attributes)
在 complexType 中使用
其中 use="required" 表示该属性必须存在,也可设为 "optional" 或省略(默认为 optional)。
5. 命名复杂类型(Reusable Complex Type)
如果多个元素需要使用相同结构,可以给 complexType 起名字,便于复用:









