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支持的复杂类型列表.

S.No.简单类型&描述
1

Empty

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

2

仅元素

元素 - 仅复杂类型元素只能包含元素

3

纯文字

纯文字复杂类型元素只能包含属性和文字.

4

混合

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

5

指标

指标控制元素在XML文档中的组织方式.

6

<any>

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

7

< anyAttribute>

<anyAttribute> attribute用于未由架构定义的属性.