复杂类型用于定义包含子元素或属性的XML元素结构,通过标签声明,支持元素内容、混合内容、空内容及带属性的简单内容四种形式;可使用、、定义子元素顺序与出现规则,并通过minOccurs和maxOccurs控制次数;属性通过添加,具名类型可复用,匿名类型嵌套于元素内,适用于构建层次化数据模型。

在XML Schema中,复杂类型(Complex Type)用于定义包含子元素、属性或两者兼具的元素结构。它比简单类型更强大,能描述具有层次结构的数据内容。复杂类型不能直接包含文本内容,除非它仅包含简单内容并带有属性。
复杂类型的定义方式
使用
基本语法如下:
内容模型分类
复杂类型的内容可以分为以下几种形式:
- 元素内容(Element-Only Content):只能包含子元素,不能有文本内容。常用于结构化数据。
- 混合内容(Mixed Content):允许文本和子元素混合出现,适用于文档类内容,如段落中包含加粗文字。
- 空内容(Empty Content):元素不包含任何文本或子元素,但可以有属性。
- 带属性的简单内容(Simple Content with Attributes):元素主体是文本,但可以附加属性。
常见结构定义方法
通过
-
:子元素必须按指定顺序出现。 -
:子元素可任意顺序出现,且每个最多出现一次。 -
:从多个子元素中选择一个出现。
还可以使用minOccurs和maxOccurs控制元素出现次数,例如minOccurs="0"表示可选,maxOccurs="unbounded"表示可重复多次。
添加属性的方法
使用
上面的例子定义了一个名为PersonType的复杂类型,包含两个子元素和一个必需的id属性。
基本上就这些。掌握复杂类型的定义方式,就能灵活构建结构化的XML数据模型。关键是理解内容类型的选择和元素/属性的组织逻辑。









