6 Schema XML
6 Schema XML
6 Schema XML
Ahmed ZELLOU
zellou_ahmed@hotmail.com
ISI, ISRT & ISEM SupMTI, 2021-2022.
XSD
Plan
n Introduction
n Types de Données
n le schéma XSD
n Les Elements simples
n Les attributs
n Les Restrictions/Facets
n Les Elements Complexes
n Les Indicateurs
n Les Type de données
n Atelier
2
@ A.ZELLOU, Technologies XML
XSD
Introduction
n Un Schéma XML est une solution alternative de DTD, basée sur XML.
n Il décrit la structure d'un document XML.
n Permet de valider un document XML.
n Extension .xsd
3
@ A.ZELLOU, Technologies XML
XSD
Introduction
4
@ A.ZELLOU, Technologie XML
XSD
XSD : Technologie typée
n Le schéma XML supporte les types de données
5
@ A.ZELLOU, Technologie XML
XSD
XSD : Contrôle de Structure
n Le schéma XML définit :
n Les éléments et les attributs qui peuvent apparaître dans un
document XML.
n Les éléments fils de chaque élément XML, leurs nombre ainsi que
leurs ordre.
n Les attributs de chaque élément XML.
n Les types de données pour les éléments et attributs.
n Les valeurs fixes pour les éléments et attributs.
n Les valeurs par défaut pour les éléments et attributs.
n Le nombre d’occurrences de chaque élément.
n …
6
@ A.ZELLOU, Technologie XML
XSD
XSD : Syntaxe
n Le document XML "pers.xml":
<?xml version="1.0"?>
<Personne numero="A1">
<nom> Zellou</nom>
<prenom> Ahmed </prenom>
<poids> 82 </poids>
<taille> 1.76 </taille>
<ddn>1986-07-04 </ddn>
<adresse>13, Rue Aviation, Rabat</adresse>
</Personne>
7
@ A.ZELLOU, Technologie XML
XSD
XSD : Syntaxe
n Le document "pers.dtd" pour valider "pers.xml":
<?xml version="1.0"?>
<!ELEMENT Personne (nom, prenom, poids, taille, ddn, adresse)>
<!ELEMENT nom (#PCDATA)>
<!ELEMENT prenom (#PCDATA)>
<!ELEMENT poids (#PCDATA)>
<!ELEMENT taille (#PCDATA)>
<!ELEMENT ddn (#PCDATA)>
<!ELEMENT adresse (#PCDATA)>
<!ATTLIST Personne numero ID #REQUIRED>
8
@ A.ZELLOU, Technologie XML
XSD
XSD : Syntaxe
n Le document "pers.xsd" pour valider "pers.xml":
<?xml version="1.0"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
targetNamespace="http://www.w3.com"
xmlns="http://www.w3.com" elementFormDefault="qualified">
<xs:element name="Personne">
<xs:complexType>
<xs:sequence>
<xs:element name="nom" type="xs:string"/>
<xs:element name="prenom" type="xs:string"/>
<xs:element name="poids" type="xs:integer"/>
<xs:element name="taille" type="xs:float"/>
<xs:element name="ddn" type="xs:date"/>
<xs:element name="adresse" type="xs:string"/>
</xs:sequence>
<xs:attribute name="numero" type="xs:ID"/>
</xs:complexType>
</xs:element>
9
</xs:schema> @ A.ZELLOU, Technologie XML
XSD
XSD : Syntaxe
n Le document "pers.xsd" pour valider "pers.xml":
l'élément racine
l’espace de noms
<?xml version="1.0"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
targetNamespace="http://www.w3.com"
alias de l’espace de noms par défaut
xmlns="http://www.w3.com"
elementFormDefault="qualified"> un espace de noms par défaut
<xs:element name="Personne">
<xs:complexType>
tous les éléments utilisés par une instance de document
</xs:complexType> XML doivent être définis dans un espace noms.
</xs:element>
</xs:schema>
10
@ A.ZELLOU, Technologie XML
XSD
XSD : Appel
n Le document "pers.xsd" pour valider "pers.xml":
<?xml version="1.0"?>
<Personne numero="A1" xmlns="http://www.w3.com"
xmlns:xs="http://www.w3.org/2001/XMLSchema-instance"
xs:schemaLocation="chemin/pers.xsd">
<nom> Zellou</nom>
<prenom> Ahmed </prenom>
<poids> 82 </poids>
<taille> 1.76 </taille>
<ddn>1980-07-04 </ddn>
<adresse>13, Rue Aviation, Rabat</adresse>
</Personne>
11
@ A.ZELLOU, Technologie XML
XSD
12
@ A.ZELLOU, Technologie XML
XSD
Un élément simple XSD
n Un élément simple est un élément contenant seulement du texte.
13
@ A.ZELLOU, Technologie XML
XSD
Un élément simple XSD
n La syntaxe pour définir un élément simple :
<xs:element name="xxx" type="yyy"/>
n XML Schema définit plusieurs types de données, les plus utilisés sont :
n xs:string
n xs:decimal
n xs:integer
n xs:boolean
n xs:date
n xs:time
14
@ A.ZELLOU, Technologie XML
XSD
Un élément simple XSD
n Quelques éléments XML :
<nom>zellou</nom>
<age>36</age>
<ddn>1980-07-04</ddn>
15
@ A.ZELLOU, Technologie XML
XSD
Un élément simple XSD
n Les éléments simples peuvent avoir des valeurs par défaut ou des
valeurs fixes.
n Exemple :
n Une valeur fixe peut aussi être attribuer à un élément et ne peut pas
être modifier.
<xs:element name="superManager" type="xs:string" fixed="PDG"/>
16
@ A.ZELLOU, Technologie XML
XSD
Un attribut XSD
n Tous les attributs sont déclarés de type simple.
<xs:attribute name="xxx" type="yyy"/>
n Les attributs peuvent avoir des valeurs par defaults ou des valeurs fixes.
n Exemple :
18
@ A.ZELLOU, Technologie XML
XSD
Un attribut XSD
n Une valeur fixe est automatiquement assignée à un attribut, et ne peut
être modifier.
<xs:attribute name="lang" type="xs:string" fixed="EN"/>
n Les attributs sont optionnels par défaut, pour préciser qu’un attribut
est obligatoire, on utilise l'attribut "use" :
<xs:attribute name="lang" type="xs:language" use="required"/>
19
@ A.ZELLOU, Technologie XML
XSD
Les Restrictions
20
@ A.ZELLOU, Technologie XML
XSD
Les Restrictions/Facets
n Les restrictions (facets) peuvent être intégrer dans les types de données
pour plus de contrôle du contenu de l'élément ou de l'attribut.
n Exemple : si un élément est de type "xs:date", on ne peut pas
maitre à l'intérieur une phrase comme "Rabat".
n Restrictions sur des valeurs
n Exemple : La valeur de l'age ne peut pas être inférieure à 0 ou
supérieure à 120:
<xs:element name="age">
<xs:simpleType>
<xs:restriction base="xs:integer">
<xs:minInclusive value="0"/>
<xs:maxInclusive value="120"/>
</xs:restriction>
</xs:simpleType>
</xs:element>
21
@ A.ZELLOU, Technologie XML
XSD
Les Restrictions/Facets
n Pour limiter le contenu d'un élément à un ensemble de valeurs, on
utilise les énumérations (Restrictions sur un modèle).
n Exemple :
<xs:element name="Mention">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:enumeration value="Passable"/>
<xs:enumeration value="A Bien"/>
<xs:enumeration value="Bien"/>
<xs:enumeration value="Très Bien"/>
<xs:enumeration value="Excellente"/>
</xs:restriction>
</xs:simpleType>
</xs:element>
22
@ A.ZELLOU, Technologie XML
XSD
Les Restrictions/Facets
n Il peut possible de définir un type pour plus de réutilisabilité :
<xs:simpleType name="Mention">
<xs:restriction base="xs:string">
<xs:enumeration value="Passable"/>
<xs:enumeration value="A Bien"/>
<xs:enumeration value="Bien"/>
<xs:enumeration value="Très Bien"/>
<xs:enumeration value="Excellente"/>
</xs:restriction>
</xs:simpleType>
n Note: dans ce cas, le type "MarqueVoiture" peut être utilisé par
d'autres éléments.
<xs:element name="mentionEtudiant" type="Mention"/>
23
@ A.ZELLOU, Technologie XML
XSD
Les Restrictions/Facets
n Pour limiter le contenu d'un élément XML d'une série de nombres ou
de lettres, nous pouvons utiliser les modèles (patterns).
n Exemple :
<xs:element name="lettre">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:pattern value="[a-z]"/>
</xs:restriction>
</xs:simpleType>
</xs:element>
24
@ A.ZELLOU, Technologie XML
XSD
Les Restrictions/Facets
n Exemple :
<xs:element name="voyelle">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:pattern value="[aeiouy]"/>
</xs:restriction>
</xs:simpleType>
</xs:element>
n Exemple :
<xs:element name="mot">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:pattern value="([a-z])+"/>
</xs:restriction>
</xs:simpleType>
25 </xs:element> @ A.ZELLOU, Technologie XML
XSD
Les Restrictions/Facets
n Exemple :
<xs:element name="telephone">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:pattern value="0(5|6|7|8|9)[0-9]{8}"/>
</xs:restriction>
</xs:simpleType>
</xs:element>
n Exemple :
<xs:element name="email">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:pattern value="?"/>
</xs:restriction>
</xs:simpleType>
26 </xs:element> @ A.ZELLOU, Technologie XML
XSD
Les Restrictions/Facets
n Exemple :
<xs:element name="genre">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:pattern value="male|female"/>
</xs:restriction>
</xs:simpleType>
</xs:element>
n Exemple :
<xs:element name="genre">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:enumeration value="male"/>
<xs:enumeration value="female"/>
</xs:restriction>
27 </xs:simpleType>
</xs:element> @ A.ZELLOU, Technologie XML
XSD
Les Restrictions/Facets
n Restrictions on longueur
n Cet exemple définit un autre élément nommé "password" avec
restriction.
<xs:element name="password">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:minLength value="8"/>
<xs:maxLength value="20"/>
</xs:restriction>
</xs:simpleType>
</xs:element>
28
@ A.ZELLOU, Technologie XML
XSD
Les Restrictions/Facets
n Restrictions sur les caractères d'espacement
n Cet exemple définit un élément nommé "adresse" avec restriction.
n La contrainte whiteSpace avec la valeur "preserve" permet de
préserver les espaces
n Le processeur XML ne supprimera aucun caractère d'espacement:
<xs:element name="adresse">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:whiteSpace value="preserve"/>
</xs:restriction>
</xs:simpleType>
</xs:element>
29
@ A.ZELLOU, Technologie XML
XSD
Les Restrictions/Facets
n Restrictions sur les caractères d'espacement
n La contrainte whiteSpace avec la valeur "replace" permet de
préserver les espaces.
n Le processeur XML remplacera tout caractères d'espacement par un
espace:
<xs:element name="adresse">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:whiteSpace value="replace"/>
</xs:restriction>
</xs:simpleType>
</xs:element>
30
@ A.ZELLOU, Technologie XML
XSD
Les Restrictions/Facets
n Restrictions sur les caractères d'espacement
n La contrainte whiteSpace avec la valeur "collapse" permet de
préserver les espaces.
n Le processeur XML remplacera tous les caractères d'espacement
consécutifs par un seul espace:
<xs:element name="adresse">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:whiteSpace value="collapse"/>
</xs:restriction>
</xs:simpleType>
</xs:element>
31
@ A.ZELLOU, Technologie XML
XSD
32
@ A.ZELLOU, Technologie XML
XSD
Eléments Complexes
n Les éléments composés sont de quatre types :
34
@ A.ZELLOU, Technologie XML
XSD
Eléments Complexes
n Type 1 : Les éléments composés que contiennent des sous-éléments.
n Méthode 1
<xs:element name="personne">
<xs:complexType>
<xs:sequence>
<xs:element name="nom" type="xs:string"/>
<xs:element name="prenom" type="xs:string"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:complexType name="infoPersonne">
<xs:sequence>
<xs:element name="nom" type="xs:string"/>
<xs:element name="prenom" type="xs:string"/>
</xs:sequence>
</xs:complexType>
n Avec cette méthode, plusieurs éléments peuvent référencer le
même type complexe.
<xs:element name="employe" type="infoPersonne"/>
<xs:element name="etudiant" type="infoPersonne"/>
<xs:element name="enfant" type="infoPersonne"/>
36
@ A.ZELLOU, Technologie XML
XSD
Eléments Complexes
n Type 2 : Un éléments de type mixte peut contenir des éléments, du
texte et des attributs.
n Méthode 1 <Livraison>
A Mr.<nomClient>Ahmed ZELLOU</nomClient>.
Votre commande <BCnum>1032</BCnum>
sera livrée le <datelivraison>2015-07-13</datelivraison>.
</Livraison>
n La définition XSD:
<xs:element name="Livraison">
<xs:complexType mixed="true">
<xs:sequence>
<xs:element name="nomClient" type="xs:string"/>
<xs:element name="BCnum" type="xs:positiveInteger"/>
<xs:element name="datelivraison" type="xs:date"/>
</xs:sequence>
37 </xs:complexType>
@ A.ZELLOU, Technologie XML
XSD
Eléments Complexes
n Type 2 : Un éléments de type mixte peut contenir des éléments, du
texte et des attributs.
n Méthode 2
38
@ A.ZELLOU, Technologie XML
XSD
Eléments Complexes
n Type 3 : Un élément vide ne peut pas avoir de contenu, mais il a des
attributs.
n Rappel <produit prodid="1345" />
n C’est un type sans éléments (seulement des attributs):
n Méthode 1
<xs:element name="produit">
<xs:complexType>
<xs:attribute name="prodid" type="xs:positiveInteger"/>
</xs:complexType>
</xs:element>
n Syntaxe
<xs:element name="Produit">
<xs:complexType>
<xs:sequence>
<xs:element name="Designation" type="xs:string"/>
<xs:element name="Categorie" type="xs:string"/>
</xs:sequence>
<xs:attribute name="numero" type="xs:Integer"/>
<xs:attribute name="reference" type="xs:string"/>
</xs:complexType>
40
</xs:element> @ A.ZELLOU, Technologie XML
XSD
Eléments Complexes
n Le schéma XML permet de définir des éléments par extension de types
existants :
<xs:complexType name="infoCompletePersonne">
<xs:complexContent>
<xs:extension base="infoPersonne">
<xs:sequence>
<xs:element name="adresse" type="xs:string"/>
<xs:element name="ville" type="xs:string"/>
<xs:element name="pays" type="xs:string"/>
</xs:sequence>
</xs:extension>
</xs:complexContent>
</xs:complexType>
n Appel
<xs:element name="employe" type="infoCompletePersonne"/>
41
@ A.ZELLOU, Technologie XML
XSD
Eléments Complexes
n Cas Particulier : un élément avec un seul attribut .
n Exemple
n Déclaration : Méthode1
<xs:element name="Montant">
<xs:complexType>
<xs:simpleContent>
<xs:extension base="xs:decimal">
<xs:attribute name="devis" type="xs:string"/>
</xs:extension>
</xs:simpleContent>
</xs:complexType>
</xs:element>
42
@ A.ZELLOU, Technologie XML
XSD
Eléments Complexes
n Cas Particulier : un élément avec un seul attribut .
n Déclaration : Méthode 2
<xs:complexType name="MontantType">
<xs:simpleContent>
<xs:extension base="xs:decimal">
<xs:attribute name="devis" type="xs:string"/>
</xs:extension>
</xs:simpleContent>
</xs:complexType>
n Appel
<xs:element name="Montant" type="MontantType"/>
43
@ A.ZELLOU, Technologie XML
XSD
Eléments Complexes
n Cas Particulier : un élément avec un seul attribut .
n Déclaration : Méthode 2
<xs:complexType name="MontantType">
<xs:simpleContent>
<xs:extension base="xs:decimal">
<xs:attribute name="devis" type="xs:string"/>
</xs:extension>
</xs:simpleContent>
</xs:complexType>
n Appel
<xs:element name="Montant" type="MontantType"/>
44
@ A.ZELLOU, Technologie XML
XSD
Les indicateurs
45
@ A.ZELLOU, Technologie XML
XSD
Les indicateurs XSD
n Permet de contrôler l’apparition des éléments dans un document XML.
n Il ya sept indicateurs
n indicateurs d'ordre : utilisés pour définir un ordre entre les éléments.
n sequence
n all
n choice
n Indicateurs d'occurrence : ils sont utilisés pour définir la fréquence
d'apparition d'un élément.
n minOccurs
n maxOccurs
n indicateurs de Groupe : Ils sont utilisés pour définir des groupes
d'éléments.
n Group
n attributeGroup
46
@ A.ZELLOU, Technologie XML
XSD
Les indicateurs XSD
n L'indicateur sequence
n Permet d'imposer un ordre spécifique entre les éléments fils.
<xs:element name="personne">
<xs:complexType>
<xs:sequence>
<xs:element name="nom" type="xs:string"/>
<xs:element name="prenom" type="xs:string"/>
</xs:sequence>
</xs:complexType>
</xs:element>
47
@ A.ZELLOU, Technologie XML
XSD
Les indicateurs XSD
n L'indicateur all
n Indique que les éléments fils peuvent apparaître dans n'importe quel
ordre
<xs:element name="examen">
<xs:complexType>
<xs:all>
<xs:element name="question1" type="xs:string"/>
<xs:element name="question2" type="xs:string"/>
</xs:all>
</xs:complexType>
</xs:element>
48
@ A.ZELLOU, Technologie XML
XSD
Les indicateurs XSD
n L'indicateur choice
n Permet d'imposer un choix entre une liste d'éléments.
<xs:element name="abonnement">
<xs:complexType>
<xs:choice>
<xs:element name="mensuel" type="mensuel"/>
<xs:element name="trimestriel" type="trimestriel"/>
</xs:choice>
</xs:complexType>
</xs:element>
49
@ A.ZELLOU, Technologie XML
XSD
Les indicateurs XSD
n L'indicateur maxOccurs
n Permet de spécifie le nombre maximal de fois qu'un élément
apparait.
<xs:element name="personne">
<xs:complexType>
<xs:sequence>
<xs:element name="nomComplet" type="nomprenom"/>
<xs:element name="nomEnfant" type="xs:string" maxOccurs="3"/>
</xs:sequence>
</xs:complexType>
</xs:element>
50
@ A.ZELLOU, Technologie XML
XSD
Les indicateurs XSD
n L'indicateur minOccurs
n Permet de spécifie le nombre minimal de fois qu'un élément
apparait.
<xs:element name="personne">
<xs:complexType>
<xs:sequence>
<xs:element name="nomeComplet type="nomprenom"/>
<xs:element name="nomEnfant" type="xs:string"
maxOccurs="3" minOccurs="0"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:group name="groupname">
...
</xs:group>
n Appel
<xs:element name="personne" type="infoPersonne"/>
55
@ A.ZELLOU, Technologie XML
XSD
Les indicateurs XSD
n L'élément attributeGroup
n Permet de Permet de définir un groupe d’éléments
<xs:attributeGroup name="groupname">
...
</xs:attributeGroup>
n Exemple
<xs:attributeGroup name="groupeAttrPersonne">
<xs:attribute name="nom" type="xs:string"/>
<xs:attribute name="prenom" type="xs:string"/>
<xs:attribute name="ddn" type="xs:date"/>
</xs:attributeGroup>
56
@ A.ZELLOU, Technologie XML
XSD
Les indicateurs XSD
n L'élément attributeGroup
n Après avoir défini un groupe d'attributs, vous pouvez le référencer
dans une autre définition :
<xs:element name="personne">
<xs:complexType>
<xs:attributeGroup ref="groupeAttrPersonne"/>
</xs:complexType>
</xs:element>
57
@ A.ZELLOU, Technologie XML
XSD
58
@ A.ZELLOU, Technologie XML
XSD
Type de données String
n Une chaîne de caractères peut contenir des caractères, des sauts de ligne,
des retours chariot et des caractères de tabulation.
n Type de données NormalizedString
n contient des caractères
n le processeur XML va supprimer les sauts de ligne, les retours
chariot et les caractères de tabulation.
<xs:element name="customer" type="xs:normalizedString"/>
61
@ A.ZELLOU, Technologie XML
XSD
Type de données Réel
n Type de données decimal
n Utilisé pour spécifier une valeur numérique réelle.
<prize> 0 </prize>
<prize> 14 </prize>
Note: Le nombre maximum de chiffres après la virgule est 18.
62
@ A.ZELLOU, Technologie XML
XSD
Type de données Entier
n Type de données integer
n Utilisé pour spécifier une valeur numérique entière.
<prize> 0 </prize>
Note: Le nombre maximum de chiffres après la virgule est 18.
63
@ A.ZELLOU, Technologie XML
XSD
Type de données Numérique
Nom Description
Byte Un entire 8-bit signé
short Entier court 16-bit
int entier signé sur 32 bits
integer Un entier
long Un entier signé 64-bit
negativeInteger Entier négatif (..,-2,-1)
nonNegativeInteger Entier non négatif (0,1,2,..)
nonPositiveInteger Entier non positif (..,-2,-1,0)
positiveInteger Entier positif (1,2,..)
unsignedLong Entier positif long 64-bit
unsignedInt Entier positif 32-bit
unsignedShort Entier positif court 16-bit
unsignedByte Entier positif court 8-bit
64
@ A.ZELLOU, Technologie XML
XSD
Type de données Numérique
n Restrictions sur le type de données Numerique
n enumeration
n fractionDigits
n maxExclusive
n maxInclusive
n minExclusive
n minInclusive
n pattern
n totalDigits
65
@ A.ZELLOU, Technologie XML
XSD
Type de données Numérique
n Restrictions sur le type de données Numerique
n enumeration
n fractionDigits
n maxExclusive
n maxInclusive
n minExclusive
n minInclusive
n pattern
n totalDigits
66
@ A.ZELLOU, Technologie XML
XSD
Binary
Permet d’exprimer des données binaire, deux types :
base64Binary (données binaires en Base64)
hexBinary (données binaires en hexadécimal)
<xs:element name="blobsrc" type="xs:hexBinary"/>
<blobsrc> 3FDD01B7 </blobsrc>
@ A.ZELLOU, Technologie XML
XSD
Divers
boolean, decimal, float, double, hexBinary, base64Binary, anyURI,
NOTATION,...
Atelier
Proposez un schéma XML pour valider "annuaire.xml" en respectant
les restrictions et les facettes suivantes :
matricule (id)
nationalite (un code de nationalité sur trois lettres en majuscule)
nom, prenom, rue et ville (chaîne de caractères)
Telephone (chaîne de caractères de taille 10 qui commence par un 0)
email (une adresse mail valide)
sexe (énumération : M ou F)
DateNaissance : une date
numero (entier positif)
Merci
78
@ A.ZELLOU, Technologie XML