XSD - 复杂类型



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

  • 定义一个复杂类型,然后使用 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

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

2

仅限元素

仅限元素的复杂类型元素只能包含元素

3

仅限文本

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

4

混合

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

5

指示器

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

6

<any>

<a&gt;元素用于架构未定义的元素

7

<anyAttribute>

<a>属性用于架构未定义的属性。

广告