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.
|