Académique Documents
Professionnel Documents
Culture Documents
Par O. Boutkhoum
◼ Le fichier XML stocke les données du document sous forme d’un arbre
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:
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).
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">
<?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
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.
▪ Default: une valeur par défaut est automatiquement affectée à l'élément lorsqu'aucune autre
valeur n'est spécifiée.
Fixed: une valeur fixe est également automatiquement affectée à l'élément et vous ne pouvez
pas spécifier une autre valeur.
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.
En XSD:
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.
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)
CDATA
optional
#IMPLIED
CDATA
xyz L'attribut default est interdit.
#FIXED "xyz"
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:
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">
<xs:sequence> <xs:complexType>
Exemple:
<xs:attribute name="quantite"
type="xs:positiveInteger" use="optional" />
<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>
◼ 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 :
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>