Elementi complessi XSD

Un elemento composto contiene altri elementi e/o attributi.

Cos'è un elemento composto?

Un elemento composto è un elemento XML che contiene altri elementi e/o attributi.

Ci sono quattro tipi di elementi composti:

  • Elementi vuoti
  • Elementi che contengono altri elementi
  • Elementi che contengono solo testo
  • Elementi che contengono elementi e testo

Nota:Questi elementi possono contenere attributi!

Esempi di elementi composti

Un elemento composto, "product", è vuoto:

<product pid="1345"/>

Un elemento composto, "employee", contiene solo altri elementi:

<employee>
<firstname>John</firstname>
<lastname>Smith</lastname>
</employee>

Un elemento composto, "food", contiene solo testo:

<food type="dessert">Gelato</food>

Un elemento composto, "description", contiene elementi e testo:

<description>
Questo è successo il <date lang="norwegian">03.03.99</date> ....
</description>

Come definire un elemento composto?

Guarda questo elemento XML complesso, "employee", che contiene solo altri elementi:

<employee>
<firstname>John</firstname>
<lastname>Smith</lastname>
</employee>

In XML Schema, ci sono due modi per definire un elemento complesso:

1. Attraverso il nome di questo elemento, puoi dichiarare direttamente l'elemento "employee", come in questo modo:

<xs:element name="employee">
  <xs:complexType>
    <xs:sequence>
      <xs:element name="firstname" type="xs:string"/>
      <xs:element name="lastname" type="xs:string"/>
    </xs:sequence>
  </xs:complexType>
</xs:element>

Se utilizzi il metodo descritto sopra, allora solo "employee" può utilizzare il tipo complesso specificato. Nota che i suoi elementi figli, "firstname" e "lastname", sono inclusi nell'indicatore <sequence>. Questo significa che i sottoelementi devono apparire nell'ordine in cui sono stati dichiarati. Vedrai Indicatori XSD Questa sezione ti insegna di più sugli indicatori.

2. L'elemento "employee" può utilizzare l'attributo type, che ha lo scopo di riferirsi al nome del tipo complesso da utilizzare:

<xs:element name="employee" type="personinfo"/>
<xs:complexType name="personinfo">
  <xs:sequence>
    <xs:element name="firstname" type="xs:string"/>
    <xs:element name="lastname" type="xs:string"/>
  </xs:sequence>
</xs:complexType>

Se hai utilizzato il metodo descritto sopra, allora più elementi possono utilizzare lo stesso tipo complesso, come questo ad esempio:

<xs:element name="employee" type="personinfo"/>
<xs:element name="student" type="personinfo"/>
<xs:element name="member" type="personinfo"/>
<xs:complexType name="personinfo">
  <xs:sequence>
    <xs:element name="firstname" type="xs:string"/>
    <xs:element name="lastname" type="xs:string"/>
  </xs:sequence>
</xs:complexType>

Puoi anche aggiungere elementi su un elemento complesso esistente, basandoti su un altro elemento complesso, come in questo modo:

<xs:element name="employee" type="fullpersoninfo"/>
<xs:complexType name="personinfo">
  <xs:sequence>
    <xs:element name="firstname" type="xs:string"/>
    <xs:element name="lastname" type="xs:string"/>
  </xs:sequence>
</xs:complexType>
<xs:complexType name="fullpersoninfo">
  <xs:complexContent>
    <xs:extension base="personinfo">
      <xs:sequence>
        <xs:element name="address" type="xs:string"/>
        <xs:element name="city" type="xs:string"/>
        <xs:element name="country" type="xs:string"/>
      </xs:sequence>
    </xs:extension>
  </xs:complexContent>
</xs:complexType>