XSD - Tipos Complexos

Elemento complexo é um elemento XML que pode conter outros elementos e / ou atributos. Podemos criar um elemento complexo de duas maneiras -

  • Defina um tipo complexo e, em seguida, crie um elemento usando o type atributo

  • Defina um tipo complexo diretamente nomeando

Defina um tipo complexo e, a seguir, crie um elemento usando o atributo 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' />

Defina um tipo complexo diretamente por nomenclatura.

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

A seguir está a lista de tipos complexos que o XSD suporta.

S.No. Tipo e descrição simples
1

Vazio

O elemento de tipo complexo vazio complexo pode ter apenas atributos, mas nenhum conteúdo.

2

Elementos Apenas

Elemento de tipo complexo apenas de elementos pode conter apenas elementos

3

Somente texto

O elemento de tipo complexo somente texto pode conter apenas atributo e texto.

4

Misturado

O elemento de tipo complexo misto pode conter elemento, atributo e texto.

5

Indicadores

Os indicadores controlam as maneiras como os elementos devem ser organizados em um documento XML.

6

<qualquer>

O elemento <any> é usado para elementos que não são definidos pelo esquema

7

<qualqueratributo>

O atributo <anyAttribute> é usado para atributos que não são definidos pelo esquema.