XSD – Complex Types

  • Post author:
  • Post category:XSD
  • Post comments:0 Comments

Complex Element is an XML element which can contain other elements and/or attributes. We can create a complex element in two ways −

  • Define a complex type and then create an element using the type attribute
  • Define a complex type directly by naming

Define a Complex Type and then create an element using type attribute.

<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' />			 

Define a Complex Type directly by naming.

<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>

Following is the list of Complex Types that XSD supports.

S.No.Simple Type & Description
1Complex Empty Element Complex Empty complex type element can only have attributes but no contents.
2Complex Elements Only Elements-Only complex type element can only contain elements
3Complex Text Only Element Text-Only complex type element can only contain attribute and text.
4Complex Mixed Element Mixed complex type element can contain element, attribute and text.
5Complex Indicators Indicators controls the ways how elements are to be organized in an XML document.
6<any> The <any> element is used for elements which are not defined by schema
7<anyAttribute> The <anyAttribute> attribute is used for attribute which are not defined by schema

Leave a Reply