Nous avons traité la première partie sur les schémas xml dans le cours précédent : xsd éléments et attributs. Dans cette partie, on continue avec plus de détails sur les types simples (xsd : union list restriction extension) pour les éléments. 

1- Eléments de type simple

Définition : 

Les types simples définissent uniquement des contenus textuels (pas d’attributs ni d’éléments enfants). Ils peuvent être utilisés pour les éléments ou les attributs.  Nous avons déjà définit les types simples de base (prédéfinis) : xsd:string, xsd:decimal, xsd:integer, 

xsd:boolean, xsd:date,….

Exemple : type simple prédéfinis

 XML :

<module>PWCC</module>

XSD :

<xsd:element name="module" type="xs:string"/> 

Création d’un nouveau type simple :

On peut définir un nouveau type simple à l’aide de la syntaxe suivante : 

<xsd:simpleType  ….>

(annotation?,(extension|restriction|list|union))

</xsd:simpleType> 
xsd simple type

Opérateur d'union

L’opérateur xsd:union définit un nouveau type simple dont les valeurs sont celles des types listés dans l’attribut memberTypes.

Exemple :

<xsd:simpleType name="IntegerType">
<xsd:union memberTypes="xsd:nonPositiveInteger xsd:nonNegativeInteger"> </xsd:simpleType>

Opérateur de liste

L’opérateur xsd:list définit un nouveau type  simple dont les valeurs sont les listes de valeurs du type simple donné par l’attribut itemType. Il s’agit uniquement de listes de valeurs séparées par des espaces. Ces listes sont souvent utilisées comme valeurs d’attributs.

Exemples :

<!-- Type pour les listes d'entiers -->
<xsd:simpleType name="IntList">  <xsd:list itemType="xsd:integer"/>  </xsd:simpleType>
<!-- Type pour les listes de 5 entiers -->
<xsd:simpleType name="IntList5">
<xsd:restriction base="IntList"> <xsd:length value="5"/>  </xsd:restriction> </xsd:simpleType>

Restriction de type

La restriction permet d’obtenir un type dérivé à partir d’un type de base (héritage). L’idée générale de la restriction est de définir un nouveau type dont les contenus au sens large sont des contenus du type de base.

La restriction d’un type est introduite par l’élément xsd:restriction dont l’attribut base donne le nom du type de base. 

1- Restriction par longueur :

pour limiter la longueur d’une valeur dans un élément, nous utiliserions les contraintes de longueur maxLength et minLength

Exemples : 

Exemple 1:

<xsd:element name="password"> 
  <xsd:simpleType>
    <xsd:restriction base="xsd:string">
      <xsd:Length value="5"/>
    </xsd:restriction>
  </xsd:simpleType>
</xsd:element> 

Exemple 2 :

<xsd:element name="password">
  <xsd:simpleType>
    <xsd:restriction base="xsd:string">
      <xsd:minLength value="5"/>
      <xsd:maxLength value="8"/>
    </xsd:restriction>
  </xsd:simpleType>
</xsd:element> 

2- Restriction par intervalle :

Exemple 1:

<xsd:element name="annee"> 
  <xsd:simpleType>
   <xsd:restriction base="xsd:integer">     <xsd:minInclusive value="1970"/>
    <xsd:maxInclusive value="2050"/>
  </xsd:restriction>
 </xsd:simpleType> 
</xsd:element> 

Exemple 2 :

<xsd:attribute name="date">
 <xsd:simpleType>
   <xsd:restriction base="xsd:date">
   <!-- Date après le 1er janvier 2010 exclus -->    <xsd:minExclusive value="2010-01-01"/>
   </xsd:restriction>
 </xsd:simpleType>
</xsd:attribute>  

3- Restriction par énumération  :

Exemple 1:

<xsd:element name="language" type="Langage"/> 
 <xsd:simpleType name="Langage">
  <xsd:restriction base="xsd:language">
   <xsd:enumeration value="ar"/> 
   <xsd:enumeration value="an"/>
   <xsd:enumeration value="fr"/>
 </xsd:restriction> 
</xsd:simpleType> 

4- Restriction par motif  :

Exemple 1:

<xs:element name="sexe"> 
  <xs:simpleType>
    <xs:restriction base="xs:string">
      <xs:pattern value="homme|femme"/>
    </xs:restriction>
  </xs:simpleType>
</xs:element> 

Exemple 2 :

<xs:element name="lettre">
  <xs:simpleType>
    <xs:restriction base="xs:string">
      <xs:pattern value="([a-z][A-Z])+"/>
    </xs:restriction>
  </xs:simpleType>
</xs:element>   

5- Traitement des caractères d’espacement (  xsd:whiteSpace ) 

Cette facette est particulière. Elle ne restreint pas les valeurs valides mais elle modifie le traitement des caractères d’espacement à  l’analyse lexicale. Cette facette peut prendre les trois valeurs preserve, replace et collapse qui correspondent à trois modes de fonctionnement de l’analyseur lexical. 

Exemple 1 :

<xsd:element name="address">
  <xsd:simpleType>
    <xsd:restriction base="xs:string">
      <xsd:whiteSpace value="preserve"/>
    </xsd:restriction>
  </xsd:simpleType>
</xsd:element>    

De façon générale :

value=”preserve” : le processeur XML ne supprimera aucun caractère d’espace blanc. 

value=”replace” : le processeur XML remplacera tous les caractères d’espaces blancs (sauts de ligne, tabulations, espaces et retours chariot) par des espaces. 

value=”collapse” : tous les caractères d’espacement seront remplacés par des espaces, les espaces de début et de fin sont supprimés et les espaces multiples sont réduits à un seul espace. 

Résumé sur les restrictions (Facettes) :

    • enumeration : Définit une liste de valeurs acceptables 
    • fractionDigits : Spécifie le nombre maximal de décimales autorisé. Doit être égal ou supérieur à zéro
    • length : Spécifie le nombre exact de caractères ou d’éléments de liste autorisés. Doit être égal ou supérieur à zéro
    • maxExclusive  : Spécifie les limites supérieures des valeurs numériques (la valeur doit être inférieure à cette valeur) 
    • maxInclusive : Spécifie les limites supérieures des valeurs numériques (la valeur doit être inférieure ou égale à cette valeur)
    •  maxLength : Spécifie le nombre maximal de caractères ou d’éléments de liste autorisés. Doit être égal ou supérieur à zéro
    •  minExclusive : Spécifie les limites inférieures des valeurs numériques (la valeur doit être supérieure à cette valeur) 
    • minInclusive : Spécifie les limites inférieures des valeurs numériques (la valeur doit être supérieure ou égale à cette valeur) 
    • minLength Spécifie le nombre minimum de caractères ou d’éléments de liste autorisés. Doit être égal ou supérieur à zéro 
    • pattern : Définit la séquence exacte de caractères acceptable
    • totalDigits : Spécifie le nombre exact de chiffres autorisés. Doit être supérieur à zéro
    • whiteSpace : Spécifie comment les espaces blancs (sauts de ligne, tabulations, espaces et retours  chariot) sont gérés.

Remarque : on peut, aussi, faire des restrictions des types complexes. L’idée reste la même avec 

Les extensions de type

L’extension est une façon, comme les restrictions, d’obtenir un type dérivé à partir d’un type de base (Héritage). L’idée générale de l’extension est de rajouter du contenu et des attributs. L’extension s’applique aux types simples et aux types complexes mais elle donne toujours un type complexe.

 L’extension d’un type est introduite par l’élément xsd:extension dont l’attribut base donne le nom du type de base. Celui-ci peut être un type prédéfini ou un type défini dans le schéma. Le contenu de l’élément xsd:extension explicite le contenu et les attributs à ajouter au type de base. 

L’élément xsd:extension est enfant d’un élément xsd:simpleContent ou xsd:complexContent, lui-même enfant de l’élément xsd:complexType.

1- Extension d’un type simple :

L’extension permet uniquement d’ajouter des attributs pour donner un type complexe à contenu simple. Lors d’une extension d’un type simple, l’élément xsd:extension est toujours enfant d’un élément xsd:simpleContent. Les déclarations des attributs qui sont ajoutés sont placées dans le contenu de l’élément xsd:extension.

Exemple : Définition d’un type Prix qui étend le type prédéfini xsd:decimal en lui ajoutant un attribut devise de  type xsd:string 

XSD :

<xsd:complexType name="Prix">  
  <xsd:simpleContent>
   <xsd:extension base="xsd:decimal">
    <!-- Attribut ajouté -->
    <xsd:attribute name="devise" type="xsd:string"/>
   </xsd:extension> 
  </xsd:simpleContent> 
</xsd:complexType>
<xsd:element name="price" type="Prix"/>

XML :

<price Prix= "euro"> 15 </price> 

2- Extension de type complexe :

cette partie de cours se focalise sur les types simple (xsd : union list restriction extension). D’où, l’extension de type complexe sera traité dans la partie suivante du cours .

N’oubliez pas de faire le TP 1  : exercices sur XSD (TP1)  si vous l’avez pas déjà fait!! bravo les champions , vous avez bien fait en suivant ce cours , vous avez améliorer vos compétences d’une façon logique et structurée. 

Nous vous proposons de voir la vidéo suivante (En darija Marocaine) qui résume et explique cette partie de cours :

Vous pouvez suivre notre cours complet d’XML . pour approfondir vos compétences sur la création et la manipulation des documents xml, dtd, xsd,xpath, xslt.

Aussi, vous avez une playlist des vidéos (Explication en Darija arabe marocaine)  bien organisée qui traite : XML DTD XSD XSLT XPATH

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *