Link Search Menu Expand Document

Schéma XML - introduction

Dans les chapitres précédents, nous avons étudié l’une des technologies permettant d’écrire les définitions de documents XML : les DTD. Mais, comme je vous le disais dans le tout premier chapitre, une autre technologie permet elle aussi d’écrire des définitions : les Schémas XML.

Cette seconde technologie offre davantage de possibilités que les DTD, il va donc falloir vous accrocher ! 😉

Les défauts des DTD

Peut-être l’avez vous remarqué dans les précédents chapitres, mais les DTD ont quelques défauts. 😉

Un nouveau format

Tout d’abord, les DTD ne sont pas au format XML. Nous avons dû apprendre un nouveau langage avec sa propre syntaxe et ses propres règles.

La principale conséquence est que, pour exploiter une DTD, nous allons être obligé d’utiliser un outil différent de celui qui exploite un fichier XML. Il est vrai que dans notre cas, nous avons utilisé le même outil, à savoir EditiX, mais vos futurs programmes, logiciels ou applications mobiles devront forcément exploiter la DTD et le fichier XML différemment, à l’aide, par exemple, d’une API différente.

###Le typage de données

Le second défaut que l’on retiendra dans ce cours est que les DTD ne permettent pas de typer des données. Comme vous avez pu le voir, on se contente d’indiquer qu’une balise contient des données, mais impossible de préciser si l’on souhaite que ça soit un nombre entier, un nombre décimal, une date, une chaîne de caractères, etc.

Les apports des schémas XML

C’est pour pallier les défauts des DTD que les Schémas XML ont été créés. S’ils proposent au minimum les mêmes fonctionnalités que les DTD, ils en apportent également de nouvelles. En voici quelques unes pêle-mêle.

Le typage des données

Les Schémas XML permettent tout d’abord de typer les données. Nous verrons également dans la suite de ce tutoriel, qu’il est possible d’aller plus loin en créant nos propres types de données.

Les contraintes

Nous découvrirons aussi que les Schémas XML permettent d’être beaucoup plus précis que les DTD lors de l’écriture des différentes contraintes qui régissent un document XML.

Des définitions XML

Un des principaux avantages des Schémas XML est qu’ils s’écrivent grâce au XML. Ainsi, pour exploiter un document XML et le Schéma qui lui est associé, vous n’avez en théorie plus besoin de plusieurs outils. Dorénavant un seul suffit !

Structure d’un schéma XML

Maintenant que vous en savez un peu plus sur les Schémas XML, je vous propose de voir les bases qui permettent de définir un Schéma XML.

L’extension du fichier

Comme pour les DTD, nous prendrons l’habitude de séparer les données formatées avec XML et le Schéma XML associé dans 2 fichiers distincts.

Bien que les Schémas XML soient écrits avec un langage de type XML, le fichier n’a pas cette extension. Un fichier dans lequel est écrit un Schéma XML porte l’extension “.xsd”.

Le prologue

Puisque c’est le XML qui est utilisé, il ne faut pas déroger à la règle du prologue.

Ainsi, la première ligne d’un Schéma XML est :

<?xml version="1.0" encoding="UTF-8" ?>

Je ne détaille pas ici les différents éléments du prologue puisque je l’ai déjà fait lors de la première partie dans le chapitre traitant de la structure d’un document XML. Si vous avez des doutes, je vous encourage vivement à relire cette partie !

Le corps

Comme pour un fichier XML classique, le corps d’un Schéma XML est constitué d’un ensemble de balises dont nous verrons le rôle dans les prochains chapitres.

Cependant, une chose ne change pas : la présence d’un élément racine, c’est-à-dire la présence d’une balise qui contient toutes les autres. Mais, contrairement à un fichier XML, son nom nous est imposé.

<!-- Prologue -->
<?xml version="1.0" encoding="UTF-8" ?>

<!-- Elément racine -->
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema">

</xsd:schema>

Comme vous pouvez le voir dans le code précédent, l’élément racine est <xsd:schema />.

Si l’on regarde de plus prêt, on remarque la présence de l’attribut xmlns:xsd. xmlns nous permet de déclarer un espace de noms. Si ce vocabulaire ne vous parle pas, je vous encourage à lire le chapitre dédié à cette notion en annexe de ce tutoriel.

A travers la déclaration de cet espace de noms, tous les éléments doivent commencer par xsd:.

Référencer un schéma XML

Le référencement d’un schéma XML se fait au niveau de l’élément racine du fichier XML grâce à l’utilisation de 2 attributs.

L’espace de noms

xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

La location

Le second attribut nous permet d’indiquer à notre fichier XML où se situe le fichier contenant le Schéma XML.

2 possibilités s’offrent alors à nous : les schémas XML qui décrivent un espace de noms et ceux qui ne décrivent pas un espace de noms.

Schéma XML décrivant un espace de noms

xsi:schemaLocation="chemin_vers_fichier.xsd">

Schéma XML ne décrivant pas un espace de noms

Dans les prochains chapitres, c’est ce type de Schéma XML que nous allons utiliser.

On utilisera alors la syntaxe suivante :

xsi:noNamespaceSchemaLocation="chemin_vers_fichier.xsd">

Pour résumer

Pour résumer, voici ce à quoi nos fichiers XML ressembleront :

<?xml version=”1.0” encoding=”UTF-8”?>

<racine xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        xsi:noNamespaceSchemaLocation="chemin_vers_fichier.xsd">

</racine>

En résumé

  • Les Schémas XML offrent plus de possibilités que les DTD.
  • Les Schémas XML s’écrivent à l’aide d’un langage de type XML.
  • Un fichier dans lequel est écrit un Schéma XML porte l’extension “.xsd”.

Ce cours vous plait ?

Retrouvez ce cours en livre physique sur Amazon !