Vous êtes sur la page 1sur 6

XML SCHEMA

Les DTD :
types pauvres, peu de contraintes sur les contenus
nombre d'apparitions d'un lment choisir entre 0 et 1
pas de gestion des espaces de noms
pas un format XML
Les schmas :
utilisation et dfinition de types, contraintes sur les contenus
possibilit de dfinir prcisment le nombre d'apparitions d'un
lment
espaces de noms supports
format XML, parsable facilement

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

LE FICHIER CONTENANT LE SCHEMA (MONSCHEMA.XSD)
<?xml version="1.0"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
.
.
.
</xs:schema>
MODELES DE CONTENU ET TYPES
On distingue deux familles de types :
les types simples qui caractrisent le contenu d'un noeud textuel
ou d'un attribut ;
les types complexes sont utiliss pour dcrire les autres formes
de contenu.
Cela nous amne distinguer diffrents modles de contenu pour un
lment selon la nature de ses noeuds fils autoriss :
vide : aucun noeud fils ;
simple : ne contient que des noeuds textuels ;
complexe : que des sous-lments ;
mixte : la fois du texte et des sous-lments.
Ds qu'un lment possde un attribut, il est considr comme tant de
type complexe, mme si son contenu est vide ou simple.
LES TYPES SIMPLES PREDEFINIS
Parmi ceux-ci :
string
decimal, integer, positiveInteger, real
date, dateTime, duration
ID, IDREF, ENTITY, NMTOKEN, etc.




DEFINIR UN NOUVEAU TYPE SIMPLE
Liste de valeurs d'un mme type simple
<xs:simpleType name="telephone">
<xs:list itemType="xs:integer" />
</xs:simpleType>
Union de types simples
<xs:simpleType name="contact">
<xs:union memberTypes="adresse telephone" />
</xs:simpleType>
Restriction d'un type simple
Consiste ajouter des contraintes un type de base, on distingue
diffrents types de contraintes, appels facettes, diffrents suivant le type
qui subit la restriction.
numration pour les chanes de caractres, nombres et dates
<xs:simpleType name="jourSemaine">
<xs:restriction base="xs:string">
<xs:enumeration value="lundi" />
<xs:enumeration value="mardi" />
<xs:enumeration value="mercredi" />
<xs:enumeration value="jeudi" />
<xs:enumeration value="vendredi" />
<xs:enumeration value="samedi" />
<xs:enumeration value="dimanche" />
</xs:restriction>
</xs:simpleType>
Longueur fixe, minimale ou maximale des chanes de caractres
<xs:simpleType name="telephone">
<xs:restriction base="xs:string">
<xs:length value="10" />
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="motdepasse">
<xs:restriction base="xs:string">
<xs:minLength value="8" />
<xs:maxLength value="20" />
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="telephone">
<xs:restriction base="xs:string">
<xs:length value="10" />
</xs:restriction>
</xs:simpleType>
Bornes sur les entiers et les dates
<xs:simpleType name="temperature">
<xs:restriction base="xs:integer">
<xs:minInclusive value="-15" />
<xs:maxInclusive value="+35" />
</xs:restriction>
</xs:simpleType>
On a aussi minExclusive et maxExclusive
Nombre de chiffres sur les nombre
<xs:simpleType name="codepostal">
<xs:restriction base="xs:integer">
<xs:totalDigits value="5" />
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="prix">
<xs:restriction base="xs:decimal">
<xs:fractionDigits value="2" />
</xs:restriction>
</xs:simpleType>
LES ATTRIBUTS
utilisation de la balise <xs:attribute /> ;
indiquer le nom de l'attribut avec l'attribut <xs:attribute
name="score" /> ;
dfinir le type du contenu de l'lment en utilisant
l'attribut type ;
prciser son caractre obligatoire ou optionnel
(required ou optional) l'aide de l'attribut use ;
ventuellement, indiquer une valeur par dfaut avec
l'attribut default.
<xs:attribute name="score" type="xs:integer" use="required" default="0" />
UN ELEMENT DE TYPE SIMPLE
utilisation de la balise <xs:element /> ;
indiquer le nom de l'lment avec l'attribut name ;
prciser le nombre d'apparition autoris pour cet lment
l'aide des attributs minOccurs etmaxOccurs ;
dfinir le type du contenu de l'lment en utilisant
l'attribut type ;
Exemple :
<xs:element name="nom" minOccurs="1" maxOccurs="1"
type="xs:string" />
<xs:element name="prnom" minOccurs="1" maxOccurs="unbounded"
type="xs:string" />
UN ELEMENT DE TYPE COMPLEXE
On dfinit les sous-lments puis les attributs
CONTENU VIDE AVEC ATTRIBUT
<xs:element name="Mot">
<xs:complexType>
<xs:attribute name="class" type="string" />
</xs:complexType>
</xs:element>

CONTENU SIMPLE AVEC ATTRIBUT
Extension ou restriction sur un type simple
<xs:element name="title">
<xs:complexType>
<xs:simpleContent>
<xs:extension base="string">
<xs:attribute name="lang" type="string" />
</xs:extension>
</xs:simpleContent>
</xs:complexType>
</xs:element>
CONTENU COMPLEXE
Utiliser <xs:complexType> puis de lister les sous-lments autoriss au
sein de l'une de ces balises :
<xs:sequence> : les sous-lments doivent tous apparatre, dans
l'ordre ;
<xs:all> : les sous-lments doivent tous apparatre, mais dans
un ordre quelconque ;
<xs:choice> : seulement un des sous-lments peut apparatre,
au choix.
<xs:element name="auteur">
<xs:complexType>
<xs:sequence>
<xs:element name="nom" minOccurs="1" maxOccurs="1"
type="xs:string" />
<xs:element name="prnom" minOccurs="1" maxOccurs="unbounded"
type="xs:string" />
</xs:sequence>
</xs:complexType>
</xs:element>
CONTENU MIXTE
On dfinit pour cela un type complexe en prcisant un attribut mixed,
celui-ci indiquant que du texte peu se glisser entre tous les sous-lments
autoriss.
<xs:element name="p">
<xs:complexType mixed="true">
<xs:choice minOccurs="0" maxOccurs="unbounded">
<xs:element name="em" type="xs:string" />
<xs:element name="strong" type="xs:string" />
</xs:choice>
</xs:complexType>
</xs:element>