TUTORIELS 
XML Schema : étude des types de données
Déclarer le type d'un élément XML donné, et sa place au sein de la hiérarchie du fichier pour faciliter le travail du parser qui se charge de valider le contenu et la structure du fichier XML.  (23 juin 2003)
 

XML Schema a été créé dans le but de simplifier le développement d'applications XML orientées "données"; pour ce faire, une large partie de la spécification de cette norme consiste uniquement en un ensemble de types de données que le développeur peut utiliser au sein de ses Schema pour décrire, structurer (mais pas ordonner) et surtout typer leurs éléments XML et tester et valider au mieux l'importation de ses données XML.

Comme nous l'avions vu dans notre présentation de XML Schema, celui-ci permet de déclarer le type d'un élément XML donné, et sa place au sein de la hiérarchie du fichier. Cela facilite le travail du parser qui se charge de valider le contenu et la structure du fichier XML.
Nous avons déjà vu dans notre précédent article comment disposer des types simples pour créer des types complexes, nous allons maintenant nous pencher sur les types de données eux-même.

Deux types de données sont utilisés au sein de XML Schema : les types simples (chaîne, octet, date...) et les types composés, ces derniers étant une conjugaison de plusieurs types simples, ou contenant plusieurs attributs ou plusieurs éléments XML de types simples.

Un type de données est composé de trois parties (ou tuples) :
1) un espace de valeur : c'est l'ensemble de valeurs que peut prendre la donnée. Par exemple, la valeur peut être de type booléen (true ou false), octal (entre -128 et 127), un chiffre positif... Les espaces de valeurs peuvent avoir certaines propriétés, comme la cardinalité, l'ordonnance et une certaine égalité. Cela permet comparer les valeurs au sein de l'espace les unes par rapport aux autres

2) un espace lexical : c'est l'ensemble de littéraux valides pour un type de données. Ainsi, "100" et "1.0E2" sont deux littéraux différents mais valides définir une même valeur. Idem pour "9" et "9,00000".

3) un ensemble de "facettes" ("facets" en anglais) : elles permettent de restreindre la valeur à une liste de valeur spécifiées. On peut ainsi imposer un maximal inclusif, une taille minimale ou encore un modèle à suivre (à la manière des expressions régulières)...

Enfin, les types de données appartiennent à l'un ou l'autre de ces deux ensembles : les primitifs ou les dérivés. Les types de données primitifs sont ceux que l'ont croisent plus ou moins habituellement dans les autres langages : string, boolean, double, date, hexBinary... Les dérivés, pour leur part, découlent des primitifs : normalizeString, integer, short, token, ENTITY... En tout, quelque 43 types simples sont proposés au développeurs, qui peut par ailleurs créer ses propres types.

Nous présenterons chacun de ces types dans un prochain article, ainsi que la manière de créer ses propres types, avec des exemples d'application.

 
[ Xavier Borderie,JDNet
 
Accueil | Haut de page