Latest web development tutorials

XML Schema éléments complexes

Elément complexe contient d'autres éléments et / ou des attributs.


h2> Qu'est-ce qu'un élément composite?

Elément composite se réfère à l'élément XML qui contient d'autres éléments et / ou des attributs.

Il existe quatre types d'éléments composites:

  • Les éléments vides
  • Il contient d'autres éléments de
  • Elément contient uniquement du texte
  • Elément contient des éléments de texte et

Remarque: Les éléments ci - dessus peuvent contenir des attributs!


Des exemples d'éléments composites

Elément composite, "produit", est vide:

<product pid="1345"/>

Elément composite, «employé», ne contient que d'autres éléments:

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

élément XML complexe, "nourriture", ne contenant que du texte:

<food type="dessert">Ice cream</food>

élément XML complexe, "description" contient des éléments et du texte:

<description>
It happened on <date lang="norwegian">03.03.99</date> ....
</description>


Comment définir l'élément complexe?

Regardez cet élément XML complexe, «employé», ne contient que d'autres éléments:

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

Dans le schéma XML, nous avons deux façons de définir des éléments complexes:

1. Nom de l'élément directement à la déclaration d'élément «employé», comme ceci:

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

Si vous utilisez la méthode décrite ci-dessus, le seul «employé» peut utiliser le type complexe spécifié. S'il vous plaît noter que ses éléments enfants, "prenom" et "nom", sont entourés par l'indicateur <sequence> dans. Cela signifie que les éléments de l'enfant doivent apparaître dans l'ordre où ils sont déclarés. Vous indicateurs XSD en apprendre davantage sur les indicateurs de cette section.

2. élément «employé» peut utiliser l'attribut type, le rôle de cet attribut est une référence au nom du type complexe à utiliser:

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

Si vous utilisez la méthode décrite ci-dessus, il peut être utilisé par un certain nombre d'éléments du même type complexe, comme ceci:

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

Vous pouvez également sur un élément composite existant à une base d'éléments composites, puis ajouter quelques éléments, comme ceci:

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