Vous êtes sur la page 1sur 50

Introduction Éléments et Types Modèle de contenus Types différents Contraintes pour les attributs

École Nationale des Sciences


Appliquées d’Oujda

Chapitre 2 :
Schéma (XSD)

22 mars 2021

Zineb BOUGROUN XML 22 mars 2021 1 / 46


Introduction Éléments et Types Modèle de contenus Types différents Contraintes pour les attributs

Plan du cours

1 Introduction

2 Éléments et Types

3 Modèle de contenus pour éléments

4 Types différents pour un même élément

5 Contraintes pour les attributs

Zineb BOUGROUN XML 22 mars 2021 2 / 46


Introduction Éléments et Types Modèle de contenus Types différents Contraintes pour les attributs

Plan du cours

1 Introduction

2 Éléments et Types

3 Modèle de contenus pour éléments

4 Types différents pour un même élément

5 Contraintes pour les attributs

Zineb BOUGROUN XML 22 mars 2021 2 / 46


Introduction Éléments et Types Modèle de contenus Types différents Contraintes pour les attributs

Plan du cours

1 Introduction

2 Éléments et Types

3 Modèle de contenus pour éléments

4 Types différents pour un même élément

5 Contraintes pour les attributs

Zineb BOUGROUN XML 22 mars 2021 2 / 46


Introduction Éléments et Types Modèle de contenus Types différents Contraintes pour les attributs

Plan du cours

1 Introduction

2 Éléments et Types

3 Modèle de contenus pour éléments

4 Types différents pour un même élément

5 Contraintes pour les attributs

Zineb BOUGROUN XML 22 mars 2021 2 / 46


Introduction Éléments et Types Modèle de contenus Types différents Contraintes pour les attributs

Plan du cours

1 Introduction

2 Éléments et Types

3 Modèle de contenus pour éléments

4 Types différents pour un même élément

5 Contraintes pour les attributs

Zineb BOUGROUN XML 22 mars 2021 2 / 46


Introduction Éléments et Types Modèle de contenus Types différents Contraintes pour les attributs

Plan du cours

1 Introduction

2 Éléments et Types

3 Modèle de contenus pour éléments

4 Types différents pour un même élément

5 Contraintes pour les attributs

Zineb BOUGROUN XML 22 mars 2021 3 / 46


Introduction Éléments et Types Modèle de contenus Types différents Contraintes pour les attributs

Racine Schéma

Un Schéma est un document XML qui doit être valide sa racine :


<?xml version="1.0"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">

...
...
...

</xs:schema>

Zineb BOUGROUN XML 22 mars 2021 4 / 46


Introduction Éléments et Types Modèle de contenus Types différents Contraintes pour les attributs

Exemple ( XML et DTD 1/3)

Zineb BOUGROUN XML 22 mars 2021 5 / 46


Introduction Éléments et Types Modèle de contenus Types différents Contraintes pour les attributs

Exemple (Schéma Séquence 2/3)

Zineb BOUGROUN XML 22 mars 2021 6 / 46


Introduction Éléments et Types Modèle de contenus Types différents Contraintes pour les attributs

Exemple (Type prédéfinie 3/3)

Zineb BOUGROUN XML 22 mars 2021 7 / 46


Introduction Éléments et Types Modèle de contenus Types différents Contraintes pour les attributs

DTD versus XMLSchema

• Plus de contraintes exprimées avec XMLSchema


• Des types de base primitifs prédéfinis : xs :string, xs :decimal,
xs :string,...
• Des types définis par l’utilisateur

Zineb BOUGROUN XML 22 mars 2021 8 / 46


Introduction Éléments et Types Modèle de contenus Types différents Contraintes pour les attributs

Déclaration d’un type dérivé

• Le type SKU (code produit) est défini à l’aide d’une déclaration de type
dérivée du type xs :string
<xs:simpleType name="SKU">
<xs:restriction base="xs:string">
<xs:pattern value="\d{3}-[A-Z]{2}"/>
</xs:restriction>
</xs:simpleType>

• Une contrainte sur la chaîne


• 3 chiffres + "-" + 2 lettres majuscules
• Exemple : 344-AB
• La même restriction pourrait s’appliquer à un contenu d’élément

Zineb BOUGROUN XML 22 mars 2021 9 / 46


Introduction Éléments et Types Modèle de contenus Types différents Contraintes pour les attributs

Contraintes d’occurrence dans les modèles de contenu

• Un modèle de contenu peut contenir des contraintes d’occurrence.


Exemple :
• Contrainte : 7 =< N =< 12
<!ELEMENT biscuit(#PCDATA)>
<!ELEMENT commande(biscuit,biscuit,biscuit,biscuit,
biscuit, biscuit,biscuit,biscuit?,biscuit?,biscuit?,
biscuit?,biscuit?)>

<xs:element name="commande">
<xs:complexType>
<xs:sequence>
<xs:element name="biscuit" type="xs:string"
minOccurs="7" maxOccurs="12" />
</xs:sequence>
</xs:complexType>
</xs:element>

Zineb BOUGROUN XML 22 mars 2021 10 / 46


Introduction Éléments et Types Modèle de contenus Types différents Contraintes pour les attributs

Types énumérés pour les attributs

• DTD
<!ELEMENT person (description du contenu de person)>
<!ATTLIST person couleur (red | green ) "red">

• Schéma
<xs:simpleType name="color">
<xs:restriction base="xs:string">
<xs:enumeration value="red"/>
<xs:enumeration value="green"/>
</xs:restriction>
</xs:simpleType>
<xs:element name="person" type="person_type">
<xs:complexType>
<xs:attribute name="couleur" type="color"/>
</xs:complexType>
</xs:element>

Zineb BOUGROUN XML 22 mars 2021 11 / 46


Introduction Éléments et Types Modèle de contenus Types différents Contraintes pour les attributs

Types énumérés pour les éléments

• DTD
• Impossible de spécifier un type énuméré comme contenu d’élément
• Schéma
• Comme un attribut, un contenu d’élément peut être de type énuméré
<xs:element name="shoes" type="color">

Zineb BOUGROUN XML 22 mars 2021 12 / 46


Introduction Éléments et Types Modèle de contenus Types différents Contraintes pour les attributs

Valeur par défaut

• Élément
<xs:element name="shoes" type="shoe_color" default="red">

• Attribut
<xs:attribute
name="shoes" type="shoe_color" default="red">

Zineb BOUGROUN XML 22 mars 2021 13 / 46


Introduction Éléments et Types Modèle de contenus Types différents Contraintes pour les attributs

Vision W3C d’un schéma XML

Un schéma XML est construit sur deux ensembles complémentaires de


constructions
• Les modèles de contenu
• Modèle de contenu vide
• Modèle de contenu simple (que du texte)
• Modèle de contenu complexe (que des éléments)
• Modèle de contenu mixte (texte + éléments)
• Les types de données
• Type simple (attributs + éléments à contenu simple sans attribut)
• Type complexe (éléments à contenu simple avec attribut + tous les autres)

Zineb BOUGROUN XML 22 mars 2021 14 / 46


Introduction Éléments et Types Modèle de contenus Types différents Contraintes pour les attributs

Plan du cours

1 Introduction

2 Éléments et Types

3 Modèle de contenus pour éléments

4 Types différents pour un même élément

5 Contraintes pour les attributs

Zineb BOUGROUN XML 22 mars 2021 15 / 46


Introduction Éléments et Types Modèle de contenus Types différents Contraintes pour les attributs

Élément <xs :schema>

• Élément racine d’un schéma XML


<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
<!-- constructions de niveau 0 -->
</xs:schema>

• Constructions de niveau 0 (composants globaux)


• Des déclarations d’élément
• Des définitions de type complexes.
• Des définitions de types simples
• D’autres encore . . . /. . .

Zineb BOUGROUN XML 22 mars 2021 16 / 46


Introduction Éléments et Types Modèle de contenus Types différents Contraintes pour les attributs

Composants globaux ou locaux

• Les composants globaux apparaissent au premier niveau au sein de


l’élément <xs :schema>
• Ils sont toujours nommés (attribut name=". . . ")
• Leur nom doit être unique au sein de leur type de composant
• Les composants locaux
• Leur nom a une portée locale au type complexe dans lequel ils sont définis
• Types simples et types complexes définis localement sont anonymes (ils ne
peuvent être réutilisés)

Zineb BOUGROUN XML 22 mars 2021 17 / 46


Introduction Éléments et Types Modèle de contenus Types différents Contraintes pour les attributs

Déclaration d’élément et d’attribut

1 Élément
• Name : le nom de l’élément
• Type : son type (simple ou complexe, prédéfinie ou type utilisateur)

2 Attribut
• Syntaxe
<xs:attribute name="..." type="..." use="...">

• L’attribut type fait référence à un type simple


• L’attribut use prend une valeur parmi required, optional, prohibited

Zineb BOUGROUN XML 22 mars 2021 18 / 46


Introduction Éléments et Types Modèle de contenus Types différents Contraintes pour les attributs

Conflit de noms
• Deux types ne peuvent avoir le même nom
• Deux éléments de type différents dans la même portée ne peuvent avoir
le même nom
• Un type et un élément peuvent avoir le même nom

Zineb BOUGROUN XML 22 mars 2021 19 / 46


Introduction Éléments et Types Modèle de contenus Types différents Contraintes pour les attributs

Type simple et type complexe

• Type simple permet de donner un type aux :


• Éléments qui ne contiennent que du texte et sans d’attribut
Exemple <prénom>Yves</prénom>
• Attributs (leur contenu n’est que textuel !)
• Type complexe permet de donner un type aux :
• Éléments qui ne contiennent que du texte mais avec attributs
Exemple <ville codePostal="35000">Rennes</ville>
• Éléments qui contiennent d’autres éléments, à contenu mixte ou non

Zineb BOUGROUN XML 22 mars 2021 20 / 46


Introduction Éléments et Types Modèle de contenus Types différents Contraintes pour les attributs

Type simple et type complexe

Zineb BOUGROUN XML 22 mars 2021 21 / 46


Introduction Éléments et Types Modèle de contenus Types différents Contraintes pour les attributs

Type simple et type complexe

Zineb BOUGROUN XML 22 mars 2021 22 / 46


Introduction Éléments et Types Modèle de contenus Types différents Contraintes pour les attributs

Élément <xs :complexeType>

• Déclaration de type complexe


<xs:complexeType name="..." mixed="...">
<!-- un modèle de contenu -->
<!-- des déclarations d’attributs -->
</xs:complexeType>

• Constructions de niveau 0 (composants globaux)


• Des déclarations d’élément
• Des définitions de type complexes.
• Des définitions de types simples
• D’autres encore . . . /. . .

Zineb BOUGROUN XML 22 mars 2021 23 / 46


Introduction Éléments et Types Modèle de contenus Types différents Contraintes pour les attributs

Élément <xs :complexeType>

Zineb BOUGROUN XML 22 mars 2021 24 / 46


Introduction Éléments et Types Modèle de contenus Types différents Contraintes pour les attributs

Plan du cours

1 Introduction

2 Éléments et Types

3 Modèle de contenus pour éléments

4 Types différents pour un même élément

5 Contraintes pour les attributs

Zineb BOUGROUN XML 22 mars 2021 25 / 46


Introduction Éléments et Types Modèle de contenus Types différents Contraintes pour les attributs

Élément <xs :complexeType>

4 sortes de modèles de contenu


• Contenu vide (par défaut)
• Contenu simple (seulement pour les contenus caractères)
• Type simple comme les attributs
<xs :simpleContent>. . . </xs :simpleContent>
• Contenu composé d’éléments
• Combinaison <xs :sequence>, <xs :choice>, <xs :all>
• Chacun contenant des références à élément de la forme
<xs :element ref=". . . " minOccurs=". . . " maxOccurs=". . . "/>
L’attribut ref fait référence à une définition d’élément
• Attribut mixed="true | false" contenu mixte ou non

Zineb BOUGROUN XML 22 mars 2021 26 / 46


Introduction Éléments et Types Modèle de contenus Types différents Contraintes pour les attributs

Contenu vide avec attribut

<prénom val="yves"/>

Définition
<xs:element name="prénom">
<xs:complexType>
<xs:attribute name="val"
type="xs:string"/>
</xs:complexType>
</xs:element>

Zineb BOUGROUN XML 22 mars 2021 27 / 46


Introduction Éléments et Types Modèle de contenus Types différents Contraintes pour les attributs

Contenu simple textuel

<prénom>Yves</prénom>

Définition
<xs:element name= "prénom" type="xs:string"/>

<xs:element name="prénom">
<xs:complexType>
<xs:simpleContent>
<xs:extension base="xs:string"/>
</xs:simpleContent>
<xs:complexType>
</xs:element>

Zineb BOUGROUN XML 22 mars 2021 28 / 46


Introduction Éléments et Types Modèle de contenus Types différents Contraintes pour les attributs

Contenu simple textuel avec attribut

<ville code="35770">vern sur seiche</ville>

Définition
<xs:element name="ville">
<xs:complexType mixed="true">
<xs:attribute name="code"
type="xs:string" />
</xs:complexType>
</xs:element>

Zineb BOUGROUN XML 22 mars 2021 29 / 46


Introduction Éléments et Types Modèle de contenus Types différents Contraintes pour les attributs

Autre moyen –l’extension d’un <simpleContent>

<ville code="35770">vern sur seiche</ville>

Définition
<xs:element name="ville">
<xs:complexType>
<xs:simpleContent>
<xs:extension base="xs:string">
<xs:attribute name="code" type="xs:string" />
</xs:extension>
</xs:simpleContent>
</xs:complexType>
</xs:element>

Zineb BOUGROUN XML 22 mars 2021 30 / 46


Introduction Éléments et Types Modèle de contenus Types différents Contraintes pour les attributs

Opérateur de composition de contenu complexe

1 Élément <xs :sequence> séquence d’éléments


2 Élément <xs :choice> choix d’éléments
3 Élément <xs :all> permutation d’éléments

Zineb BOUGROUN XML 22 mars 2021 31 / 46


Introduction Éléments et Types Modèle de contenus Types différents Contraintes pour les attributs

Séquence d’éléments

Zineb BOUGROUN XML 22 mars 2021 32 / 46


Introduction Éléments et Types Modèle de contenus Types différents Contraintes pour les attributs

Choix entre éléments

Zineb BOUGROUN XML 22 mars 2021 33 / 46


Introduction Éléments et Types Modèle de contenus Types différents Contraintes pour les attributs

Élément à contenu mixte

Zineb BOUGROUN XML 22 mars 2021 34 / 46


Introduction Éléments et Types Modèle de contenus Types différents Contraintes pour les attributs

Expression régulière (1)

Zineb BOUGROUN XML 22 mars 2021 35 / 46


Introduction Éléments et Types Modèle de contenus Types différents Contraintes pour les attributs

Expression régulière (2)

Zineb BOUGROUN XML 22 mars 2021 36 / 46


Introduction Éléments et Types Modèle de contenus Types différents Contraintes pour les attributs

Réutilisation d’un type

• DTD : On utilise les entités paramètres

• XMLSchema : Un type déclaré au niveau 1 de l’élément <xs :schema>, Il


est global, il porte un nom, il peut être réutilisé

Zineb BOUGROUN XML 22 mars 2021 37 / 46


Introduction Éléments et Types Modèle de contenus Types différents Contraintes pour les attributs

Permutation d’élément : All

• L’opérateur xsd :all n’a pas d’équivalent dans les DTD. Il définit un
nouveau type dont chacun des éléments doit apparaître une fois dans
un ordre quelconque.
• Un opérateur xsd :all ne peut pas être imbriqué avec d’autres
constructeur sxsd :sequence, xsd :choice ou même xsd :all.
• Les seuls enfants possibles de xsd :all sont des éléments xsd :element.
• xsd :all est toujours enfant de xsd :complexType ou
xsd :complexContent.
• La valeur de l’attribut minOccurs doit être 0 ou 1 et la valeur de l’attribut
maxOccurs doit être 1 qui est la valeur par défaut.
• Les attributs minOccurs et maxOccurs peuvent aussi apparaître comme
attribut de xsd :all.

Zineb BOUGROUN XML 22 mars 2021 38 / 46


Introduction Éléments et Types Modèle de contenus Types différents Contraintes pour les attributs

Permutation d’élément : All

l’élément book, ses enfants peuvent apparaître dans n’importe quel ordre et
chacun d’eux peut avoir 0 ou 1 occurrence.

Zineb BOUGROUN XML 22 mars 2021 39 / 46


Introduction Éléments et Types Modèle de contenus Types différents Contraintes pour les attributs

Plan du cours

1 Introduction

2 Éléments et Types

3 Modèle de contenus pour éléments

4 Types différents pour un même élément

5 Contraintes pour les attributs

Zineb BOUGROUN XML 22 mars 2021 40 / 46


Introduction Éléments et Types Modèle de contenus Types différents Contraintes pour les attributs

Deux types différents pour le même nom d’élément

Zineb BOUGROUN XML 22 mars 2021 41 / 46


Introduction Éléments et Types Modèle de contenus Types différents Contraintes pour les attributs

Deux types différents pour le même nom d’élément

Zineb BOUGROUN XML 22 mars 2021 42 / 46


Introduction Éléments et Types Modèle de contenus Types différents Contraintes pour les attributs

Plan du cours

1 Introduction

2 Éléments et Types

3 Modèle de contenus pour éléments

4 Types différents pour un même élément

5 Contraintes pour les attributs

Zineb BOUGROUN XML 22 mars 2021 43 / 46


Introduction Éléments et Types Modèle de contenus Types différents Contraintes pour les attributs

Attribut chaîne obligatoire

Zineb BOUGROUN XML 22 mars 2021 44 / 46


Introduction Éléments et Types Modèle de contenus Types différents Contraintes pour les attributs

Attribut chaîne optionnel

Zineb BOUGROUN XML 22 mars 2021 45 / 46


Introduction Éléments et Types Modèle de contenus Types différents Contraintes pour les attributs

Attribut à valeur fixe

Zineb BOUGROUN XML 22 mars 2021 46 / 46

Vous aimerez peut-être aussi