<XML Schema参考手册
定义和用法
该complexType元素定义复杂类型。 复杂类型元素是包含其它元素和/或属性的XML元素。
元素信息
- Parent elements:元素,重新定义,模式
句法
<complexType
id=ID
name=NCName
abstract=true|false
mixed=true|false
block=(#all|list of (extension|restriction))
final=(#all|list of (extension|restriction))
any attributes
>
(annotation?,(simpleContent|complexContent|((group|all|
choice|sequence)?,((attribute|attributeGroup)*,anyAttribute?))))
</complexType>
(?符号声明元素可出现零次或一次,*符号声明元素可出现复杂类型元素中零次或多次)
属性 | 描述 |
---|---|
id | 可选的。 指定一个唯一的ID为元素 |
name | 可选的。 指定名称为元素 |
abstract | 可选的。 指定是否复杂类型可以在实例文档中使用。 True表示一个元素不能直接使用这个复杂的类型,但必须使用从该复杂类型派生的复杂类型。 默认为false |
mixed | 可选的。 指定字符数据是否允许此complexType元素的子元素之间出现。 默认为false。 如果simpleContent的元素是子元素,在mixed属性是不允许的! |
block | 可选的。 防止复杂类型具有替代该复杂类型被用来指定类型派生的。 这个值可以包含#all或者是扩展或限制的一个子集的列表:
|
final | 可选的。 防止特定类型的这种复杂类型元素的派生。 可以包含#all或者是延长或限制的一个子集的列表。
|
any attributes | 可选的。 规定带有non-schema命名空间的任何其他属性。 |
例1
下面的例子有命名的元素"note"这是一个复杂类型:
<xs:element name="note">
<xs:complexType>
<xs:sequence>
<xs:element name="to" type="xs:string"/>
<xs:element name="from" type="xs:string"/>
<xs:element name="heading" type="xs:string"/>
<xs:element name="body" type="xs:string"/>
</xs:sequence>
</xs:complexType>
</xs:element>
例2
下面的例子有一个复杂类型, "fullpersoninfo"从另一个复杂类型,导出"personinfo"通过扩展继承的类型与另外三个要素(address, city and country) :
<xs:element name="employee" type="fullpersoninfo"/>
<xs:complexType name="personinfo">
<xs:sequence>
<xs:element name="firstname" type="xs:string"/>
<xs:element name="lastname" type="xs:string"/>
</xs:sequence>
</xs:complexType>
<xs:complexType name="fullpersoninfo">
<xs:complexContent>
<xs:extension base="personinfo">
<xs:sequence>
<xs:element name="address" type="xs:string"/>
<xs:element name="city" type="xs:string"/>
<xs:element name="country" type="xs:string"/>
</xs:sequence>
</xs:extension>
</xs:complexContent>
</xs:complexType>
在上面的例子中"employee"元素必须包含在顺序下列元素: "firstname" , "lastname" , "address" , "city"和"country" 。
<XML Schema参考手册