Link Search Menu Expand Document

Schéma XML - les éléments simples

Dans le chapitre précédent, nous avons vu que les Schémas XML permettent de pallier les faiblesses des DTD. Après avoir également vu la structure d’un Schéma XML, je vous propose d’aborder l’écriture d’un Schéma XML à proprement parler.

La première notion que nous allons aborder ce que l’on appelle les éléments simples.

Les éléments simples

Définition

Un élément simple est un élément qui ne contient qu’une valeur dont le type est dit simple. Il ne contient pas d’autres éléments.

Un élément simple peut donc être une balise qui ne contient aucun attribut et dans laquelle aucune autre balise n’est imbriquée. Un attribut d’une balise peut également être considéré comme un élément simple. En effet, la valeur d’un attribut est un type simple.

Nous verrons la liste complète des types simples un peu plus loin dans ce tutoriel, mais je peux déjà vous citer quelques exemples afin de tenter d’éclaircir les choses. Un type simple, c’est par exemple un chiffre, une date ou encore une chaîne de caractères.

Quelques exemples

Prenons quelques exemples de fichiers XML, et regardons ensemble s’ils peuvent être considérés comme des types simples :

<!-- Ne contient ni attribut ni aucun autre élément => élément simple -->
<nom>ROBERT</nom>

<!-- Contient un attribut => n'est pas un élément simple -->
<!-- Cependant l'attribut "sexe" est un élément simple -->
<personne sexe="masculin">Robert DUPONT</personne>

<!-- La balise personne contient d'autres éléments (les balises nom et prénom) => n'est pas un élément simple -->
<personne>
  <!-- Ne contient ni attribut ni aucun autre élément => élément simple -->
  <nom>DUPONT</nom>
  
  <!-- Ne contient ni attribut ni aucun autre élément => élément simple -->
  <prenom>Robert</prenom>
</personne>

J’espère que ces exemples vous permettent de mieux comprendre ce qu’est un élément simple.

Déclarer une balise comme un élément simple

Si vous souhaitez déclarer une balise en tant qu’élément simple, c’est le mot clef element qu’il faut utiliser. N’oubliez pas de précéder son utilisation par xsd:.

Cette balise prend 2 attributs : un nom et un type.

<xsd:element name="mon_nom" type="xsd:mon_type" />

Voyons tout de suite un exemple. Soit les éléments simples suivants :

<nom>DUPONT</nom>
<prenom>Robert</prenom>
<age>38</age>

Au sein d’un Schéma XML, les éléments précédents seront déclarés de la sorte :

<xsd:element name="nom" type="xsd:string" />
<xsd:element name="prenom" type="xsd:string" />
<xsd:element name="age" type="xsd:int" />

String est utilisé pour qualifier une chaîne de caractères et int est utilisé pour qualifier un nombre entier.

La liste complète des types qu’il est possible d’utiliser est fournie un peu plus loin dans ce tutoriel. 😉

Valeur par défaut et valeur inchangeable

Avant que l’on regarde ensemble la liste des types, j’aimerais revenir sur 2 concepts qui sont les valeurs par défaut et les valeurs inchangeables.

Valeur par défaut

Comme c’était déjà le cas dans les DTD, il est tout à fait possible d’indiquer dans les Schémas XML qu’un élément a une valeur par défaut. Pour rappel, la valeur par défaut est la valeur que va prendre automatiquement un élément si aucune valeur n’est indiquée au niveau du fichier XML.

Pour indiquer une valeur par défaut, c’est l’attribut default qui est utilisé au niveau de la balise <element /> du Schéma XML. Par exemple, si je souhaite indiquer qu’à défaut d’être renseigné, le prénom d’une personne est Robert, je vais écrire la règle suivante :

<xsd:element name="prenom" type="xsd:string" default="Robert" />

Voici alors quelques exemples de documents XML possibles :

<!-- valide -->
<prenom>Jean</prenom>

<!-- valide -->
<prenom>Marie</prenom>

<!-- valide -->
<!-- la balise prenom vaut "Robert" -->
<prenom></prenom>

Valeur constante

S’il est possible d’indiquer une valeur par défaut, il est également possible d’imposer une valeur. Cette valeur inchangeable est appelée constante.

Pour indiquer une valeur constante, c’est l’attribut fixed qui est utilisé au niveau de la balise <element /> du Schéma XML. Par exemple, si je souhaite obliger toutes les personnes de mon document XML à porter le prénom Robert, voici la règle à écrire :

<xsd:element name="prenom" type="xsd:string" fixed="Robert" />

Voyons alors la validité des lignes XML suivantes :

<!-- valide -->
<prenom>Robert</prenom>

<!-- invalide -->
<prenom>Marie</prenom>

<!-- invalide -->
<prenom></prenom>

Les attributs

Comme je vous le disais un peu plus tôt dans ce tutoriel, dans un Schéma XML, tous les attributs d’une balise XML sont considérés comme des éléments simples. En effet, ils ne peuvent prendre comme valeur qu’un type simple, c’est-à-dire un nombre, une chaîne de caractères, une date, etc.

Déclarer un attribut

Bien qu’un attribut soit un élément simple, nous n’allons pas utiliser le mot clef element pour déclarer un attribut. C’est le mot attribut qui est utilisé. Encore une fois, n’oubliez pas de faire précéder son utilisation par xsd:.

Cette balise prend 2 attributs : un nom et un type.

<xsd:attribute name="mon_nom" type="xsd:mon_type" />

Prenons par exemple la ligne XML suivante :

<personne sexe="masculin">Robert DUPONT</personne>

Je ne vais pas détailler ici comment déclarer la balise. En effet, puisqu’elle contient un attribut, c’est ce qu’on appelle un élément complexe et nous verrons comment faire un peu plus tard. Cependant, voici comment déclarer l’attribut dans notre Schéma XML :

<xsd:attribute name="sexe" type="xsd:string" />

Valeur par défaut, obligatoire et inchangeable

Valeur par défaut

Comme c’était déjà le cas dans les DTD, il est tout à fait possible d’indiquer dans les Schémas XML qu’un attribut a une valeur par défaut. Pour rappel, la valeur par défaut est la valeur prise automatiquement par un attribut si aucune valeur n’est indiquée au niveau du fichier XML.

Pour indiquer une valeur par défaut, c’est l’attribut default qui est utilisé au niveau de la balise <attribut /> du Schéma XML. Par exemple, si je souhaite indiquer qu’à défaut d’être renseigné, le sexe d’une personne est masculin, je vais écrire la règle suivante :

<xsd:attribute name="sexe" type="xsd:string" default="masculin" />

Valeur constante

S’il est possible d’indiquer une valeur par défaut, il est également possible d’imposer une valeur. Cette valeur inchangeable est appelée constante.

Pour indiquer une valeur constante, c’est l’attribut fixed qui est utilisé au niveau de la balise <attribut /> du Schéma XML. Par exemple, si je souhaite obliger toutes les personnes de mon document XML à être des femmes, voici la règle à écrire :

<xsd:attribute name="sexe" type="xsd:string" fixed="feminin" />

Attribut obligatoire

Tels que nous les déclarons depuis le début de ce chapitre, les attributs sont, par défaut, optionnels.

Pour indiquer qu’un attribut est obligatoire, nous devons renseigner la propriété use à laquelle nous affectons la valeur required. Par exemple, si je souhaite obliger l’utilisation de l’attribut sexe, voici la règle à écrire :

<xsd:attribute name="sexe" type="xsd:string" use="required" />
<xsd:attribute name="sexe" type="xsd:string" fixed="feminin" />

En résumé

  • Un élément simple est un élément qui ne contient qu’une valeur dont le type est dit simple comme par exemple une balise qui ne contient aucun attribut et dans laquelle aucune autre balise n’est imbriquée.
  • Pour décrire un élément simple, on utilise la balise <xsd:element />.
  • Il est possible de définir une valeur par défaut ou une valeur constante à un élément simple.
  • Un attribut est également un élément simple.
  • Pour décrire un attribut, on utilise la balise <xsd:attribute />.
  • Il est possible de définir une valeur par défaut, une valeur constante à un élément simple ou rendre obligatoire un attribut.

Ce cours vous plait ?

Retrouvez ce cours en livre physique sur Amazon !