XML Schema complexType 元素
-
定义和使用
complexType 元素定义一个复杂类型。 复杂类型元素是包含其他元素和/或属性的XML元素。父元素:element, redefine, schema
-
语法
<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>
(? 符号声明该元素可以出现零次或一次,而 * 符号声明该元素可以在 complexType 元素内零次或多次出现。)
-
参数
属性 描述 id 可选的。 指定元素的唯一ID name 可选的。 指定元素的名称 abstract 可选的。 指定是否可以在实例文档中使用复杂类型。 True 表示元素不能直接使用此复杂类型,而必须使用从该复杂类型派生的复杂类型。 默认为 false mixed 可选的。 指定是否允许在该 complexType 元素的子元素之间出现字符数据。 默认为 false。 如果 simpleContent 元素是子元素,则不允许混合属性! block 可选的。 防止使用具有指定派生类型的复杂类型代替此复杂类型。 该值可以包含#all或作为扩展或限制的子集的列表: - extension - 防止由扩展派生的复杂类型
- restriction - 防止由限制派生的复杂类型
- #all - 防止所有派生的复杂类型
final 可选的。 防止指定此复杂类型元素的派生类型。 可以包含 #all 或作为扩展或限制的子集的列表。 - extension - 防止通过扩展求导
- restriction - 防止限制导出
- #all - 防止所有派生
any attributes 可选的。 用非模式命名空间指定任何其他属性 -
示例
下面的示例具有一个复杂类型的名为 “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>
以下示例具有一个复杂类型 “fullpersoninfo”,该类型通过从继承的类型扩展三个附加元素(地址,城市和国家/地区)而派生自另一个复杂类型 “personinfo”:<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”。