XSD - 复杂类型


复杂元素是可以包含其他元素和/或属性的 XML 元素。我们可以通过两种方式创建一个复杂的元素 -

  • 定义一个复杂类型,然后使用type属性创建一个元素

  • 直接通过命名定义复杂类型

定义一个复杂类型,然后使用 type 属性创建一个元素。

<xs:complexType name = "StudentType">
   <xs:sequence>
      <xs:element name = "firstname" type = "xs:string"/>
      <xs:element name = "lastname" type = "xs:string"/>
      <xs:element name = "nickname" type = "xs:string"/>
      <xs:element name = "marks" type = "xs:positiveInteger"/>
   </xs:sequence>
   <xs:attribute name = 'rollno' type = 'xs:positiveInteger'/>
</xs:complexType>

<xs:element name = 'student' type = 'StudentType' />			 

直接通过命名来定义复杂类型。

<xs:element name = "student">
   <xs:complexType>   
      <xs:sequence>
         <xs:element name = "firstname" type = "xs:string"/>
         <xs:element name = "lastname" type = "xs:string"/>
         <xs:element name = "nickname" type = "xs:string"/>
         <xs:element name = "marks" type = "xs:positiveInteger"/>
      </xs:sequence>
   <xs:attribute name = 'rollno' type = 'xs:positiveInteger'/>
   </xs:complexType>
<xs:element>

以下是 XSD 支持的复杂类型列表。

编号 简单类型和描述
1

空的

Complex 空复杂类型元素只能有属性但没有内容。

2

仅元素

Elements-Only复杂类型元素只能包含元素

3

纯文本

仅文本复杂类型元素只能包含属性和文本。

4

混合

混合复杂类型元素可以包含元素、属性和文本。

5

指标

指示器控制元素在 XML 文档中的组织方式。

6

<任意>

<any> 元素用于未由模式定义的元素

7

<任意属性>

<anyAttribute> 属性用于未由模式定义的属性。