XML - Schémas

Le schéma XML est communément appelé XML Schema Definition (XSD). Il est utilisé pour décrire et valider la structure et le contenu des données XML. Le schéma XML définit les éléments, les attributs et les types de données. L'élément Schema prend en charge les espaces de noms. Il est similaire à un schéma de base de données qui décrit les données d'une base de données.

Syntaxe

Vous devez déclarer un schéma dans votre document XML comme suit -

Exemple

L'exemple suivant montre comment utiliser le schéma -

<?xml version = "1.0" encoding = "UTF-8"?>
<xs:schema xmlns:xs = "http://www.w3.org/2001/XMLSchema">
   <xs:element name = "contact">
      <xs:complexType>
         <xs:sequence>
            <xs:element name = "name" type = "xs:string" />
            <xs:element name = "company" type = "xs:string" />
            <xs:element name = "phone" type = "xs:int" />
         </xs:sequence>
      </xs:complexType>
   </xs:element>
</xs:schema>

L'idée de base derrière les schémas XML est qu'ils décrivent le format légitime qu'un document XML peut prendre.

Éléments

Comme nous l'avons vu dans le chapitre XML - Éléments , les éléments sont les blocs de construction d'un document XML. Un élément peut être défini dans un XSD comme suit -

<xs:element name = "x" type = "y"/>

Types de définition

Vous pouvez définir des éléments de schéma XML des manières suivantes:

Type simple

L'élément de type simple n'est utilisé que dans le contexte du texte. Certains des types simples prédéfinis sont: xs: integer, xs: boolean, xs: string, xs: date. Par exemple -

<xs:element name = "phone_number" type = "xs:int" />

Type complexe

Un type complexe est un conteneur pour d'autres définitions d'élément. Cela vous permet de spécifier les éléments enfants qu'un élément peut contenir et de fournir une structure dans vos documents XML. Par exemple -

<xs:element name = "Address">
   <xs:complexType>
      <xs:sequence>
         <xs:element name = "name" type = "xs:string" />
         <xs:element name = "company" type = "xs:string" />
         <xs:element name = "phone" type = "xs:int" /> 
      </xs:sequence> 
   </xs:complexType>
</xs:element>

Dans l'exemple ci-dessus, l' élément Address se compose d'éléments enfants. Ceci est un conteneur pour d'autres<xs:element> définitions, qui permet de construire une simple hiérarchie d'éléments dans le document XML.

Types globaux

Avec le type global, vous pouvez définir un type unique dans votre document, qui peut être utilisé par toutes les autres références. Par exemple, supposons que vous souhaitiez généraliser la personne et l' entreprise pour différentes adresses de l'entreprise. Dans ce cas, vous pouvez définir un type général comme suit -

<xs:element name = "AddressType">
   <xs:complexType>
      <xs:sequence>
         <xs:element name = "name" type = "xs:string" />
         <xs:element name = "company" type = "xs:string" />
      </xs:sequence> 
   </xs:complexType>
</xs:element>

Utilisons maintenant ce type dans notre exemple comme suit -

<xs:element name = "Address1">
   <xs:complexType>
      <xs:sequence>
         <xs:element name = "address" type = "AddressType" />
         <xs:element name = "phone1" type = "xs:int" /> 
      </xs:sequence> 
   </xs:complexType>
</xs:element> 

<xs:element name = "Address2">
   <xs:complexType>
      <xs:sequence>
         <xs:element name = "address" type = "AddressType" />
         <xs:element name = "phone2" type = "xs:int" /> 
      </xs:sequence> 
   </xs:complexType>
</xs:element>

Au lieu d'avoir à définir deux fois le nom et la société (une fois pour Address1 et une fois pour Address2 ), nous avons maintenant une seule définition. Cela simplifie la maintenance, c'est-à-dire que si vous décidez d'ajouter des éléments «Code postal» à l'adresse, vous devez les ajouter à un seul endroit.

Les attributs

Les attributs dans XSD fournissent des informations supplémentaires dans un élément. Les attributs ont la propriété de nom et de type comme indiqué ci-dessous -

<xs:attribute name = "x" type = "y"/>