XSD

De EduTech Wiki
Aller à la navigation Aller à la recherche

Cet article est une ébauche à compléter. Une ébauche est une entrée ayant un contenu (très) maigre et qui a donc besoin d'un auteur.

Introduction à XSD - cet article est une ébauche faite dans le cadre de l'exercice 10 stic-2

Article à marier avec XML Schema

XSD versus DTD

Les DTD c'est sympa, mais c'est "has been". :). Aujourd'hui le XSD est partout!

Le XSD comme le DTD permet de définir une structure de document xml.

Un des avantages du XSD c'est qu'il est lui même fait en XML, ceci permet d'utiliser tous les outils tels que les validateurs, les parseurs etc sur un document XSD, ils sont aussi plus lisibles du coup.

De plus, le XSD permet une gestion beaucoup plus précise de la structure des documents. Ils permettent de préciser des types de données, de spécifier les formats, de limiter le nombre d'occurences, de préciser l'ordre des noeuds enfants etc.

Fichier DTD (source w3schools) <!ELEMENT note (to, from, heading, body)>

<!ELEMENT to (#PCDATA)>
<!ELEMENT from (#PCDATA)>
<!ELEMENT heading (#PCDATA)>
<!ELEMENT body (#PCDATA)> 

Fichier XSD (source w3schools)

<?xml version="1.0"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
targetNamespace="http://www.w3schools.com"
xmlns="http://www.w3schools.com"
elementFormDefault="qualified">
<xs:element name="note">
  <xs:complexType>
    <xs:sequence>
      <xs:element name="to" type="xs:string"/>
      <xs:element name="from" type="xs:string"/>
      <xs:element name="heading" type="xs:string"/>
      <xs:element name="body" type="xs:string"/>
    </xs:sequence>
  </xs:complexType>
</xs:element>
</xs:schema> 

Ici on voit que le type de chaque attribut est une chaîne de caractère "xs:string", on aurait pu mettre "xs:int", "xs:date", "xs:long", etc. si on avait d'autres attibuts

Dans cet exemple on a créé un type complexe. En XSD on peut faire des types simples et complexes.

Exemple d'un type simple : <xs:element name="dateNaissance" type="xs:date"/>

Les types complexes sont créés dans le cas où on peut pas se contenter d'un xs:int ou xs:string ou autre. Les types complexes nous permettent de gérer des données plus complexes qui ont peut-être besoin d'être ré-utilisées dans d'autres élements de la page.

On peut déclarer un type complexe Adresse qui contient une ligne d'adresse et une ligne pour la ville. On peut ensuite ré-utiliser ce type dans le reste du XSD.

Voici un exemple :


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

</xs:complexType> <xs:element name="Client">

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

</xs:element>

Un des autres avantages de XSD c'est qu'on peut réutiliser les schémas dans d'autres schémas et on peut en inclure plusieurs. Le XSD est plus complexe que le DTD mais de ce fait aussi bien plus puissant. Il est notemment utilisé dans les webservices en combinaison avec les WSDL.