Vous êtes sur la page 1sur 36

Programmation web Avancée

Chap 3: XML Schema

Par O. Boutkhoum

Faculté des Sciences – El Jadida SMI S6, 2022/2023


Schémas XML
Structure d’un fichier XML
➢ Un document XML se compose de 3 fichiers :

◼ Le fichier XML stocke les données du document sous forme d’un arbre

◼ DTD ou Schémas XML définit la structure du fichier XML

◼ La feuille de style définit la mise en forme des données du fichier xml

2
Omar Boutkhoum – boutkhoum.o@ucd.ac.ma Prog. web Avancée – SMI S6 / F.S El Jadida
Schémas XML

✓ Les schémas XML permettent, comme les DTD, de définir des modèles de documents.
➢ Il est ensuite possible de vérifier qu'un document donné est valide pour un schéma,
c'est-à-dire respecte les contraintes données par le schéma.

➢ Les schémas ont été introduits pour combler certaines lacunes des DTD.

3
Omar Boutkhoum – boutkhoum.o@ucd.ac.ma Prog. web Avancée – SMI S6 / F.S El Jadida
Schémas XML
Une alternative au DTD : les schémas XML
 Inconvénients des DTD
◼ Syntaxe particulière (langage de description spécifique)
◼ 1 seul type de données : PCDATA
◼ Pas de définition précise du nombre d’occurrences
◼ ….
 Avantages des Schémas XML (en plus des fonctionnalités fournies par les DTD)
◼ Syntaxe XML: les schémas XML sont écrits en XML.
◼ Typage des données : plusieurs type de données, création de nouveaux types, . . .
◼ La notion d'héritage: Les éléments peuvent hériter du contenu et des attributs d'un autre élément.
◼ Les indicateurs d'occurrences des éléments peuvent être tout nombre non négatif.
◼ Ils supportent les espaces de nommage (Namespaces)

4
Omar Boutkhoum – boutkhoum.o@ucd.ac.ma Prog. web Avancée – SMI S6 / F.S El Jadida
Schémas XML
Introduction:

Un schéma XML est un langage de description de document. Il permet de décrire


l'intégralité de la structure que doit respecter un document lui faisant référence.

Appelé aussi la définition du schéma XML (XML Schema Definition: XSD).

 La version 1.0 est proposé par le consortium W3C en 2001 et une révision en 2004.
 Un schéma xml permet de décrire les autorisations d'imbrication (avec l'ordre d'apparition des éléments
et de leurs attributs).

 Permet de définir plusieurs formats XML (extensible).


 Permet de définir des restrictions (facettes) sur les données.

5
Omar Boutkhoum – boutkhoum.o@ucd.ac.ma Prog. web Avancée – SMI S6 / F.S El Jadida
Schémas XML
Structure de base d’un schéma xml:
 Comme tout document XML, un Schéma XML commence par un prologue, et dispose d’un élément
racine.
<?xml version="1.0" encoding="ISO-8859-1"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">

<!-- déclarations d'éléments, d'attributs et de types ici -->


</xs:schema>

 L'élément racine est l'élément xs:schema


 Les éléments et les types de données utilisés dans le schéma proviennent de l'espace de noms
http://www.w3.org/2001/XMLSchema. Et doivent être préfixées avec ’xs:’ .
 L’objectif des espaces de nommage est de pouvoir résoudre des conflits entre des tags aux noms
identiques décrivant des données différentes dans un même fichier. 6
Omar Boutkhoum – boutkhoum.o@ucd.ac.ma Prog. web Avancée – SMI S6 / F.S El Jadida
Schémas XML
Référencer un schéma dans un document XML
Pour valider un document XML d'après un Schéma XML on utilise un des attributs schemaLocation ou
noNamespaceSchemaLocation dans l'élément racine du document à valider.

<?xml version="1.0"?>
le schéma est dans le même dossier
<note xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" que le document xml + pas d’espace
xsi:noNamespaceSchemaLocation ="note.xsd"> de nom.
…….
</note> <?xml version="1.0"?>
<note xmlns="https://www.w3schools.com"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="https://www.w3schools.com
https://www.w3schools.com/schema/note.xsd">
…….
<?xml version="1.0"?>
</note>
<note xmlns="https://www.w3schools.com"
l'URI de l'espace de nom xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
et l'URL du schéma XML xsi:schemaLocation="https://www.w3schools.com note.xsd">
correspondant …….
</note> 7
Omar Boutkhoum – boutkhoum.o@ucd.ac.ma Prog. web Avancée – SMI S6 / F.S El Jadida
Schémas XML
 Modèles de contenu et types
Quatre catégories de modèles de contenu
Contenu Vide Simple Complexe Mixte

Eléments non non oui oui

Texte non oui non oui

 Deux catégories de types de données: simple et complexe


 Simple: un attribut ou un noeud textuel (noeud terminal)
 Complexe: un élément au contenu complexe ou mixte et/ou avec des attributs

 Dès qu'un élément possède un attribut, il est considéré comme étant de type complexe, même si son contenu est vide
ou simple.
8
Omar Boutkhoum – boutkhoum.o@ucd.ac.ma Prog. web Avancée – SMI S6 / F.S El Jadida
Schémas XML
 Déclaration d'un élément simple
▪ Un élément simple contient uniquement du texte. Il ne peut contenir d’autres éléments ou attributs.
<xs:element name="x" type="y"/>
▪ Cependant le « texte » peut être typé par les types présents dans le schéma XSD (boolean, string,
date…) ou par un type personnalisé à définir.
▪ Il est également possible d’ajouter des restrictions (facettes) sur les types, de manière à contrôler le
contenu ou imposer à la donnée de respecter un certain pattern.

Définition d’un élément simple


XSD : Types «standards »
<xs:element name="lastname" type="xs:string"/> •xs:string
<xs:element name="age" type="xs:integer"/> •xs:decimal
<xs:element name="dateborn" type="xs:date"/> •xs:integer
XML : •xs:boolean
<lastname>myname</lastname> •xs:date
<age>22</age> •xs:time
<dateborn>1998-03-27</dateborn>
9
Omar Boutkhoum – boutkhoum.o@ucd.ac.ma Prog. web Avancée – SMI S6 / F.S El Jadida
Schémas XML
 Déclaration d'un élément simple
▪ Valeurs par défaut et valeurs fixes pour les éléments simples:

▪ Default: une valeur par défaut est automatiquement affectée à l'élément lorsqu'aucune autre
valeur n'est spécifiée.

<xs:element name="couleur" type="xs:string" default="rouge"/>

 Fixed: une valeur fixe est également automatiquement affectée à l'élément et vous ne pouvez
pas spécifier une autre valeur.

<xs:element name="couleur" type="xs:string" fixed="rouge"/>

10
Omar Boutkhoum – boutkhoum.o@ucd.ac.ma Prog. web Avancée – SMI S6 / F.S El Jadida
Schémas XML
 Déclaration d'un élément complexe
Un élément complexe est un élément qui contient d'autres éléments et/ou des attributs.
Exemple Les éléments
doivent
◼ En XSD: apparaître dans
<xs:element name="personne"> l’ordre

<xs:complexType>
<xs:sequence>
<xs:element name= "nom" type="xs:string" />
<xs:element name="age" type="xs:integer"/>
</xs:sequence>
</xs:complexType>
</xs:element>
▪ En XML:
<personne>
<nom>Dupont</nom>
<age>25</age>
</personne> 11
Omar Boutkhoum – boutkhoum.o@ucd.ac.ma Prog. web Avancée – SMI S6 / F.S El Jadida
Schémas XML
 Déclaration d'un élément complexe
 Il existe 4 types d’éléments complexes :
1. Les éléments vides
2. Les éléments qui contiennent d’autres éléments
3. Les éléments qui contiennent du texte et ou des attributs.
4. Les éléments qui contiennent à la fois des éléments et du texte
Ex1:
<product pid="1345"/>
Ex2:
<employee>
<firstname>John</firstname>
<lastname>Smith</lastname>
</employee>
Ex3:
<food type="dessert">Glace</food>
Ex4:
<description> Cela s’est passé le <date lang="norwegian">03.03.99</date> .... </description> 12
Omar Boutkhoum – boutkhoum.o@ucd.ac.ma Prog. web Avancée – SMI S6 / F.S El Jadida
Schémas XML
 Déclaration d’attributs
À la différence des éléments, un attribut ne peut être que de type simple.

Cela signifie que les attributs, comme avec les DTD, ne peuvent contenir d'autres éléments ou attributs.

◼ La syntaxe pour définir un attribut est la suivante:

<xs:attribute name="xxx" type="yyy"/>


◼ Exemple:

En XSD:

<xs:attribute name="lang" type="xs:string" default="FR"/>

En XML:

<titre lang="FR">Test</titre>

13
Omar Boutkhoum – boutkhoum.o@ucd.ac.ma Prog. web Avancée – SMI S6 / F.S El Jadida
Schémas XML
 Déclaration d’attributs:
 L’instruction attribute d'un Schéma XML peut avoir trois attributs optionnels :
use ( “optional” | “required” | “prohibited”), default et fixed.
 Des combinaisons de ces trois attributs permettent de paramétrer ce qui est acceptable ou non dans le fichier final.
 Exemple:
<xs:attribute name="maj" type="xs:date" use="optional" default="2023-03-08" />

Une valeur par défaut est automatiquement attribuée à l'attribut lorsqu'aucune autre valeur n'est spécifiée.

 Pour spécifier que l'attribut est obligatoire, utilisez l'attribut "use":


<xs:attribute name="maj" type="xs:date" use=“required" />

 Quand l'attribut fixed est renseigné, la seule valeur que peut prendre l'attribut déclaré est celle de
l'attribut fixed: <xs:attribute name="maj" type="xs:date" fixed=“…." />

14
Omar Boutkhoum – boutkhoum.o@ucd.ac.ma Prog. web Avancée – SMI S6 / F.S El Jadida
Schémas XML
 Déclaration d’attributs:
◼ Contraintes d'occurrences fixables par les attributs use, default et fixed (Comparaison entre le
format DTD et le Schéma XML)

Attribut Attribut Attribut


DTD Commentaire
use= default= fixed=
CDATA
required
#REQUIRED

CDATA "xyz" xyz

CDATA
optional
#IMPLIED
CDATA
xyz L'attribut default est interdit.
#FIXED "xyz"

Cet attribut ne doit pas


prohibited
apparaître

15
Omar Boutkhoum – boutkhoum.o@ucd.ac.ma Prog. web Avancée – SMI S6 / F.S El Jadida
Schémas XML
 Déclaration d’attributs:

 Remarque:
◼ Il est à noter que la valeur de l'attribut default doit être conforme au type déclaré.

◼ Exemple:

<xs:attribute name="maj" type="xs:date" use="optional" default="-43" />

Erreur à la validation du schéma.

16
Omar Boutkhoum – boutkhoum.o@ucd.ac.ma Prog. web Avancée – SMI S6 / F.S El Jadida
Schémas XML
 Déclaration d’attributs: Regroupements d'attributs
Le Schéma XML permet de déclarer des groupes d'attributs (groupes auxquels il est possible de faire appel lors
d'une déclaration d'éléments): <xs:attributeGroup>
➔ Eviter de répéter des informations de déclarations.
<xs:element name="elt1">
<xs:complexType mixed="true">
<xs:attributeGroup ref="groupe1" />
</xs:complexType>
</xs:element>
<xs:element name="elt2">
<xs:complexType mixed="true">
<xs:attributeGroup ref="groupe1" />
</xs:complexType>
</xs:element>
<xs:attributeGroup name="groupe1">
<xs:attribute name="attr1" use="required" />
<xs:attribute name="attr2" default="blabla" use="optional" />
<xs:attribute name="attr3" />
<xs:attribute name="attr4" fixed="blabla" />
</xs:attributeGroup> 17
Omar Boutkhoum – boutkhoum.o@ucd.ac.ma Prog. web Avancée – SMI S6 / F.S El Jadida
Schémas XML
 Déclaration d’un type complexe avec un contenu mixte
◼ Un élément de type complexe mixte peut contenir des attributs, des éléments et du texte.
Exemple: Un élément XML, « lettre », qui contient à la fois du texte et d'autres éléments:

<letter>
Dear Mr. <name>John Smith</name>.
Your order <orderid>1032</orderid> Le schéma suivant déclare l'élément
will be shipped on <shipdate>2001-07-13</shipdate>. « lettre »:
</letter> <xs:element name="letter">
<xs:complexType mixed="true">

mixed="true" => permettre aux données <xs:sequence>


de caractères d'apparaître entre les <xs:element name="name" type="xs:string"/>
éléments enfants de "letter"
<xs:element name="orderid" type="xs:positiveInteger"/>
<xs: sequence> signifie que les éléments <xs:element name="shipdate" type="xs:date"/>
définis (name, orderid et shipdate) doivent
apparaître dans cet ordre à l'intérieur de </xs:sequence>
l’élément "letter". </xs:complexType>
</xs:element> 18
Omar Boutkhoum – boutkhoum.o@ucd.ac.ma Prog. web Avancée – SMI S6 / F.S El Jadida
Schémas XML
 Déclaration et référencement
◼ Pour des raisons de clarté, il est beaucoup plus avantageux d'ordonner ces déclarations.
◼ Il est recommandé de commencer par déclarer les éléments et attributs de type simple, puis ceux de
type complexe.
◼ On peut en effet faire référence (ref=" " ), dans une déclaration de type complexe, à un élément de type
simple préalablement défini.
◼ Par exemple:
<xs:element name="pages" type="xs:positiveInteger" />
<xs:element name="livre"> <xs:element name="auteur" type="xs:string" />
<xs:complexType> … est plus difficile à maintenir que… <xs:element name="livre">

<xs:sequence> <xs:complexType>

<xs:element name="auteur" type="xs:string" /> <xs:sequence>


<xs:element ref="auteur" />
<xs:element name="pages" type="xs:positiveInteger" />
<xs:element ref="pages" />
</xs:sequence>
</xs:sequence>
</xs:complexType>
</xs:complexType>
</xs:element>
</xs:element> 19
Omar Boutkhoum – boutkhoum.o@ucd.ac.ma Prog. web Avancée – SMI S6 / F.S El Jadida
Schémas XML
 Les types de données: Types simples Intégré: https://www.w3.org/TR/xmlschema-2/#built-in-datatypes

◼ La hiérarchie des types prédéfinis dans la bibliothèque de types intégrés

Exemple:
<xs:attribute name="quantite"
type="xs:positiveInteger" use="optional" />

Omar Boutkhoum – boutkhoum.o@ucd.ac.ma Prog. web Avancée – SMI S6 / F.S El Jadida


Schémas XML
 Les types de données: Types simples : Listes
◼ Il est possible de créer une liste personnalisée, par "dérivation" de types existants.
◼ L'élément list définit un élément de type simple en tant que liste de valeurs d'un type de données
spécifié. Par exemple,
<xs:element name="telephone" type="numeroDeTelephone"/>

<xs:simpleType name="numeroDeTelephone">
<xs:list itemType="xs:integer" />
</xs:simpleType>
◼ Un élément conforme à cette déclaration serait
<telephone>01 44 27 60 11</telephone>.
◼ Il est également possible d'indiquer des contraintes plus fortes sur les types simples. Ces contraintes
s'appellent des "facettes".
 Elles permettent par exemple de limiter la longueur de notre numéro de téléphone à 10 nombres.

21
Omar Boutkhoum – boutkhoum.o@ucd.ac.ma Prog. web Avancée – SMI S6 / F.S El Jadida
Schémas XML
 Les types de données: Types simples : Union
◼ Choisir le type de contenu d'un élément:
 Par exemple: On peut désirer qu'un type autorise soit un nombre, soit une chaîne de caractères
particuliers.
 Il est possible de le faire à l'aide d'une déclaration d'union.
◼ Par exemple, sous réserve que le type simple numéroDeTéléphone ait été préalablement défini (voir
précédemment), on peut déclarer...
<xs:element name="téléphone">
<xs:simpleType name="numeroTelTechnique">
<xs:union memberTypes="xs:string numeroDeTelephone" />
</xs:simpleType>
</xs:element>
◼ Les éléments suivants sont alors des "instances" valides de cette déclaration :
<téléphone>150</téléphone> // <téléphone>Pompiers</téléphone>

22
Omar Boutkhoum – boutkhoum.o@ucd.ac.ma Prog. web Avancée – SMI S6 / F.S El Jadida
Schémas XML
 Les types de données: Types complexes: séquences d’éléments
◼ Nous savons déjà comment, dans une DTD, nous pouvons déclarer un élément comme pouvant contenir une
suite de sous-éléments, dans un ordre déterminé.
◼ Avec un schéma, on utilise pour ce faire l'élément xs:sequence, qui reproduit l’opérateur ‘,’ du langage
DTD. Exemple:
<xs:complexType>
<xs:sequence>
DTD: <!ELEMENT elem (elem1, elem2, elem3)>
<xs:element name="nom" type="xs:string" />
<xs:element name="prénom" type="xs:string" />
<xs:element name="dateDeNaissance" type="xs:date"/>
<xs:element name="adresse" type="xs:string" />
<xs:element name="email" type="xs:string" />
<xs:element name="tel" type="numéroDeTéléphone" />
</xs:sequence>
</xs:complexType>

23
Omar Boutkhoum – boutkhoum.o@ucd.ac.ma Prog. web Avancée – SMI S6 / F.S El Jadida
Schémas XML
 Les types de données: Types complexes: Choix d’élément
◼ On peut vouloir modifier la déclaration de type précédente en stipulant qu'on doive indiquer soit l'adresse
d'une personne, soit son adresse électronique. Pour cela, il suffit d'utiliser un élément xs:choice
(l'opérateur | dans une DTD):
<xs:complexType>
<xs:sequence>
<xs:element name="nom" type="xs:string" />
<xs:element name="prénom" type="xs:string" />
<xs:element name="dateDeNaissance" type="xs:date"/>
<xs:choice>
<xs:element name="adresse" type="xs:string" />
<xs:element name="email" type="xs:string" />
</xs:choice>
<xs:element name="tel" type="numéroDeTéléphone" />
</xs:sequence>
</xs:complexType> 24
Omar Boutkhoum – boutkhoum.o@ucd.ac.ma Prog. web Avancée – SMI S6 / F.S El Jadida
Schémas XML
 Les types de données: Types complexes: Elément All
◼ L’élément All indique que les éléments enfants doivent apparaître (ou pas du tout) dans n'importe quel ordre.

◼ Exemple:
Attributs:
<xs:complexType> minOccurs
<xs:all> maxOccurs
<xs:element name=“thing1" type="xs:string" />
<xs:element name="thing2" type="xs:string" />
<xs:element name="thing3" type=" xs:string"/>
</xs:all>
<?xml version="1.0"?> XML
</xs:complexType> <myElement>
<thing2>Some</thing2>
<thing3>text</thing3>
<thing1>for you</thing1>
</myElement>
25
Omar Boutkhoum – boutkhoum.o@ucd.ac.ma Prog. web Avancée – SMI S6 / F.S El Jadida
Schémas XML
 Indicateur d’occurrences
◼ Pendant la déclaration d’un élément, on peut indiquer le nombre minimum et le nombre maximum de
fois qu’il doit apparaître.
◼ On utilise pour cela les attributs minOccurs et maxOccurs:
◼ minOccurs prend par défaut la valeur 1 et peut prendre les autres valeurs positives
◼ maxOccurs prend par défaut la valeur 1 et peut prendre les autres valeurs positive ou unbounded
(infini).

<xs:element name="person">
les éléments "firstname"
<xs:complexType>
et "lastname" peuvent
<xs:all>

<xs:element name="firstname" type="xs:string" minOccurs="0"/>


apparaître dans n'importe
<xs:element name="lastname" type="xs:string" minOccurs="0"/> quel ordre et chaque
</xs:all> élément PEUT apparaître
</xs:complexType> zéro ou une fois!
</xs:element>
26
Omar Boutkhoum – boutkhoum.o@ucd.ac.ma Prog. web Avancée – SMI S6 / F.S El Jadida
Schémas XML
 Dérivation

◼ Il est possible de raffiner la déclaration des types simples et complexes de telle manière qu'ils soient

 Une "restriction"

 Ou une "extension" d'un type déjà existant, en vue de préciser un peu plus leur forme.

◼ Nous allons nous limiter dans ce cours à la restriction des types simples.

27
Omar Boutkhoum – boutkhoum.o@ucd.ac.ma Prog. web Avancée – SMI S6 / F.S El Jadida
Schémas XML
 Dérivation: Restriction de types
◼ Une "facette" permet de placer une contrainte sur l'ensemble des valeurs que peut prendre un type de
base. <xs:restriction …..>
◼ Exemple 1 : maxExclusive
On peut souhaiter créer un type simple, appelé MonEntier, limité aux valeurs comprises entre 0 et 99
inclus:
 On dérive ce type à partir du type simple prédéfini nonNegativeInteger, en utilisant la facette
maxExclusive.

<xs:simpleType name="monEntier">
<xs:restriction base="xs:nonNegativeInteger">
<xs:maxExclusive value="100" />
</xs:restriction>
la valeur doit être inférieure strictement
</xs:simpleType> à 100.
Spécifie les limites supérieures (maxInclusive pour inclure 100)
des valeurs numériques 28
Omar Boutkhoum – boutkhoum.o@ucd.ac.ma Prog. web Avancée – SMI S6 / F.S El Jadida
Schémas XML
 Dérivation: Restriction de types
◼ Une "facette" permet de placer une contrainte sur l'ensemble des valeurs que peut prendre un type de
base. <xs:restriction …..>
◼ Exemple 2 : maxInclusive et minInclusive
Cet exemple définit un élément appelé "age" avec une restriction. La valeur de l'âge ne peut pas être
inférieure à 0 ni supérieure à 100:

<xs:element name="age">
<xs:simpleType>
<xs:restriction base="xs:integer">
<xs:minInclusive value="0"/>
<xs:maxInclusive value="100"/>
</xs:restriction>
</xs:simpleType>
</xs:element>
29
Omar Boutkhoum – boutkhoum.o@ucd.ac.ma Prog. web Avancée – SMI S6 / F.S El Jadida
Schémas XML
 Dérivation: Restriction de types
◼ Une "facette" permet de placer une contrainte sur l'ensemble des valeurs que peut prendre un type
de base. <xs:restriction …..>
◼ Exemple 3:
Un type simple provient de la restriction d'un autre type simple par application d'une facette :

30
Omar Boutkhoum – boutkhoum.o@ucd.ac.ma Prog. web Avancée – SMI S6 / F.S El Jadida
Schémas XML
 Dérivation: Restriction de types
◼ Il existe un nombre important de facettes qui permettent de :

 fixer, restreindre ou augmenter la longueur minimale ou maximale d'un type simple

 énumérer toutes les valeurs possibles d'un type

 prendre en compte des expressions régulières

 fixer la valeur minimale ou maximale d'un type (voir l'exemple précédent)

 fixer la précision du type...

31
Omar Boutkhoum – boutkhoum.o@ucd.ac.ma Prog. web Avancée – SMI S6 / F.S El Jadida
Schémas XML
 Exemples de facettes: Restrictions sur un ensemble de valeurs
Limiter les différentes valeurs possible d’un type:
<xs:attribute name="jour" type="jourSemaine" use="required" />
<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>
32
Omar Boutkhoum – boutkhoum.o@ucd.ac.ma Prog. web Avancée – SMI S6 / F.S El Jadida
Schémas XML
 Exemples de facettes: Restrictions sur la longueur
✓ Limiter la longueur d’une chaîne de caractères:
<xs:simpleType name="monType">
<xs:restriction base="xs:string">
<xs:length value="21" />
</xs:restriction>
</xs:simpleType>
✓ L'élément "password" est de type simple avec une restriction. La valeur doit être au minimum de cinq
caractères et au maximum huit caractères:
<xs:element name="password">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:minLength value="5"/>
<xs:maxLength value="8"/>
</xs:restriction>
</xs:simpleType>
33
</xs:element>
Omar Boutkhoum – boutkhoum.o@ucd.ac.ma Prog. web Avancée – SMI S6 / F.S El Jadida
Schémas XML
 Exemples de facettes: xs:pattern
On peut utiliser des expressions rationnelles, qui permettent de spécifier quels sont les caractères
autorisés, à l'aide de l'élément xs:pattern:

<xs:simpleType name="typeAdresseElectronique">
<xs:restriction base="xs:string">
<xs:pattern value="(.)+@(.)+" />
</xs:restriction>
</xs:simpleType>

Dans cet exemple, (.)+ signifie que l'on peut mettre n'importe quel caractère au moins une fois, et
qu'entre les deux chaînes doit impérativement apparaître le caractère @.

34
Omar Boutkhoum – boutkhoum.o@ucd.ac.ma Prog. web Avancée – SMI S6 / F.S El Jadida
Schémas XML
 Exemples de facettes: Restrictions sur une série de valeurs
 Limiter le contenu d'un élément XML afin de définir une série de chiffres ou de lettres pouvant être
utilisés.

◼ L'exemple ci-dessous définit un élément appelé "lettre" avec une restriction. La seule valeur
acceptable est UNE des lettres minuscule de a à z:

<xs:element name="lettre">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:pattern value="[a-z]"/>
</xs:restriction>
</xs:simpleType>
</xs:element>

35
Omar Boutkhoum – boutkhoum.o@ucd.ac.ma Prog. web Avancée – SMI S6 / F.S El Jadida
Schémas XML
 Exemples de facettes: Restrictions sur une série de valeurs
 Restrictions sur une série de valeurs: limiter le contenu d'un élément XML afin de définir une série de
chiffres ou de lettres pouvant être utilisés.

◼ L'exemple ci-dessous définit un élément appelé "lettre" avec une restriction: La valeur acceptable
est zéro ou plusieurs occurrences de lettres minuscules de a à z:

<xs:element name="lettre">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:pattern value=" ([a-z])* "/>
</xs:restriction>
</xs:simpleType>
</xs:element>

✓ Pour d’autres facettes: https://www.w3schools.com/xml/schema_facets.asp


36
Omar Boutkhoum – boutkhoum.o@ucd.ac.ma Prog. web Avancée – SMI S6 / F.S El Jadida

Vous aimerez peut-être aussi