Vous êtes sur la page 1sur 39

eXtensible Markup Language

Module 3: Travailler avec les


schémas XML

1 M. Essaïd FASSY FEHRY


M. Essaïd FASSY FEHRY

Travailler avec les schémas XML

z Objectifs :
– Lors de ce module vous serez amener à :
z Déclarer des attributs dans un schéma XML

z Identifier le besoin en espaces de noms XML

z Utiliser les composants d'un schéma XML dans un autre

2
M. Essaïd FASSY FEHRY

Déclarer des attributs dans schéma XML

Énoncé du Problème 3.D.1


La Direction Générale de CyberShoppe envoie l’information sur ses produits à
ses succursales. Les détails du produit doivent être stockés dans un format
uniforme chez toutes les succursales. Des restrictions doivent être mise en
place sur le genre de données qui peuvent être enregistrées dans le magasin
de données afin d’assurer l’uniformité et la consistance de l’information.

Les produits vendus par CyberShoppe sont organisés en deux catégories,


Jouets et Livres. Les détails du produit comprennent le nom du produit, une
brève description, le prix et la quantité disponible en stock. Chaque produit est
identifié de manière unique par un ID Produit.

3
M. Essaïd FASSY FEHRY

Déclarer des attributs dans schéma XML

z Liste des tâches


1. Identifier les éléments et les attributs requis dans le document XML.
2. Identifier la méthode pour déclarer un attribut dans un schéma XML.
3. Identifier le mécanisme pour restreindre les valeurs qui peuvent être
assignées à un attribut.
4. Déclarer les éléments et les attributs.
5. Créer un document XML.
6. Valider le document XML par rapport au schéma.

4
M. Essaïd FASSY FEHRY

Déclarer des attributs dans schéma XML

z Identifier les éléments et les attributs requis dans le


document XML.
– DONNEESPRODUIT
z PRODUIT
– NOMPRODUIT
– DESCRIPTION
– PRIX
– QUANTITE
– Les attributs qui seront utilisés pour un produit sont :
z IDPRODUIT
z CATEGORIE

5
M. Essaïd FASSY FEHRY

Déclarer des attributs dans schéma XML

z Identifier la méthode pour déclarer un attribut dans un


schéma XML.
– L'élément Attribute
z La syntaxe pour déclarer un attribut dans XSD est la suivante :

<attribute name="NomAttribut" default="ValeurParDefaut"


fixed="ValeurFixe" ref="NomAttribut" type="NomTypeDonnées"
use="Valeur"/>

z L'attribut name
– Cet attribut est utilisé pour spécifier le nom de l'attribut défini par l'utilisateur.
Cet attribut doit être utilisé quand l'élément schema est l'élément parent de
l'élément attribute. La valeur de l'attribut name ne peut pas inclure le
symbole (:).

z L'attribut default
– Cet attribut est utilisé pour spécifier la valeur par défaut pour l'attribut. Cet
attribut est optionnel.

6
M. Essaïd FASSY FEHRY

Déclarer des attributs dans schéma XML

z Identifier la méthode pour déclarer un attribut dans un


schéma XML.
– L'élément Attribute
z L'attribut fixed
– Cet attribut est utilisé pour fournir une valeur fixe à l'attribut. Si vous
fournissez une valeur fixe à l'attribut, cette valeur ne pourrez pas être changée
dans le document XML. On ne peut pas utiliser les attributs default et
fixed.

<xs:attribute name="PrixBase" fixed="200" type="xs:positiveInteger"/>

z L'attribut ref
– Cet attribut est utilisé pour référencer un attribut défini par l'utilisateur déclaré
dans le même ou n'importe quel autre document XSD. Par exemple, un
attribut qui est défini pour un élément dans le document XSD peut être utilisé
par un autre élément. Vous ne pouvez pas référencer et déclarer un attribut
dans la même instruction de déclaration.

7
M. Essaïd FASSY FEHRY

Déclarer des attributs dans schéma XML

z Identifier la méthode pour déclarer un attribut dans un


schéma XML.
– L'élément Attribute
z L'attribut type
– Cet attribut prend une valeur qui spécifie le type de données de l'attribut
défini par l'utilisateur. En voici un exemple :

<xs:attribute name="IDPRODUIT" type="xs:string"/>

z L'attribut use
– Cet attribut spécifie la façon avec laquelle un attribut peut être utilisé dans
un document XML. Les valeurs qui peuvent être assignées à l'attribut use
sont les suivantes :

Valeur Description
optional Spécifie que l'attribut est optionnel. C'est la
valeur par défaut de l'attribut use.
required Spécifie que l'attribut est obligatoire.

8
M. Essaïd FASSY FEHRY

Déclarer des attributs dans schéma XML

z Identifier la méthode pour déclarer un attribut dans un


schéma XML.
– L'élément Attribute
z L'attribut use
– Voici un exemple d'utilisation :

<xs:element name="PRODUIT" type="prod"/>


<xs:complexType name="prod">
<xs:sequence>
<xs:element name="NOMPRODUIT" type="xs:string"/>
<xs:element name="DESCRIPTION" type="xs:string"/>
<xs:element name="PRIX" type="xs:positiveInteger"/>
<xs:element name="QUANTITE" type="xs:integer"/>
</xs:sequence>
<xs:attribute name="IDPRODUIT" type="xs:string" use="required">
</xs:attribute>
</xs:complexType>

9
M. Essaïd FASSY FEHRY

Déclarer des attributs dans schéma XML

z Identifier la méthode pour déclarer un attribut dans un


schéma XML.
– Les attributs globaux
z Parfois, vous pouvez avoir besoin d'utiliser le même attribut pour
différents éléments. Par exemple, vous avez besoin d'utiliser l'attribut
"NOM" avec les éléments "LIVRE" et "AUTEUR". Dans une telle
situation, vous devez déclarer un attribut global et le réutiliser avec
différents éléments.

z Les attributs globaux sont des attributs déclarés en dehors de la


déclaration des différents éléments.

z Les attributs globaux facilitent la réutilisation des attributs.

<xs:schema>
<xs:attribute name="NOM" type="xs:string"/>
</xs:schema>

10
M. Essaïd FASSY FEHRY

Déclarer des attributs dans schéma XML

z Identifier la méthode pour déclarer un attribut dans un


schéma XML.
– Les attributs globaux
z Par la suite, l'attribut peut être réutilisé de la manière suivante :

<xs:element name="LIVRE" type="TYPELIVRE"/>


<xs:complexType name="TYPELIVRE">
:
<xs:attribute ref="NOM"/>
:
</xs:complexType>

<xs:element name="AUTEUR" type="TYPEAUTEUR"/>


<xs:complexType name="TYPEAUTEUR">
:
<xs:attribute ref="NOM"/>
:
11 </xs:complexType>
M. Essaïd FASSY FEHRY

Déclarer des attributs dans schéma XML

z Identifier la méthode pour déclarer un attribut dans un


schéma XML.
– Les attributs globaux

Les
Lesdéclarations
déclarationsdes
desattributs
attributsglobaux
globauxne
nepeuvent
peuventpas
pasinclure
inclure
l'attribut
l'attributuse.
use.

12
M. Essaïd FASSY FEHRY

Déclarer des attributs dans schéma XML

z Identifier le mécanisme pour restreindre les valeurs qui


peuvent être assignées à un attribut.
– Les attributs sont déclarés dans un schéma XML.

– Les valeurs sont assignées aux attributs dans le document XML


qui est conforme au schéma XML.

– Dans le but de s'assurer que la valeur assignée à l'attribut


correspond à un certain modèle, vous devez fixer la valeur de
l'attribut use à required.

– Par la suite, vous pouvez associer l'attribut à un type de données


simple défini par l'utilisateur et lui associer des restrictions.

13
M. Essaïd FASSY FEHRY

Déclarer des attributs dans schéma XML

z Identifier le mécanisme pour restreindre les valeurs qui


peuvent être assignées à un attribut.

<xs:attribute name="IDPROD" type="pid" use="required"/>


<xs:simpleType name="pid">
<xs:restriction base="xs:string">
<xs:pattern value="[P]{1}\d{3}"/>
</xs:restriction>
</xs:simpleType>

14
M. Essaïd FASSY FEHRY

Déclarer des attributs dans schéma XML

z Déclarer les éléments et les attributs.

15
M. Essaïd FASSY FEHRY

Déclarer des attributs dans schéma XML

z Créer un document XML.

16
M. Essaïd FASSY FEHRY

Déclarer des attributs dans schéma XML

z Valider le document XML par rapport au schéma.

17
M. Essaïd FASSY FEHRY

Déclarer des attributs dans schéma XML

Juste une Minute


En plus du stockage du nom du livre, le prénom et le nom de l'auteur et le prix
du livre, vous avez aussi besoin de stocker l'ID du livre et le type de la
couverture pour chaque livre. Le type de couverture peut être soit Forte ou
Légère. Déclarez les éléments et les attributs requis pour stocker les détails du
livre. L'ID du livre peut être utilisé dans différents documents XML qui stockent
les données produit. Assurez-vous que l'attribut ID Livre est réutilisable.

18
M. Essaïd FASSY FEHRY

Les Espaces de noms XML

z Introduction aux Espaces de noms XML


– XML est un langage extensible. Cela signifie que vous pouvez
créer et utiliser vos propres balises dans un document XML. Les
règles de ces balises sont définies dans le schéma.

– Cependant, l'extensibilité de XML peut nous conduire à quelques


problèmes. Par exemple, deux développeurs peuvent créer
différents schémas contenant des balises qui ont le même nom
mais qui peuvent indiquer des types de données différents.

– Voici un exemple illustrant cette problématique.

19
M. Essaïd FASSY FEHRY

Les Espaces de noms XML

z Introduction aux Espaces de noms XML


<?xml version="1.0" encoding="UTF-8"?>
<LIVRE>
<NOM>Apprendre le langage XML</NOM>
<PRIX>25</PRIX>
</LIVRE>

<?xml version="1.0" encoding="UTF-8"?>


<AUTEUR>
<NOM>Essaïd FASSY FEHRY</NOM>
<ADRESSE>20, rue de Bruxelles.</ADRESSE>
</AUTEUR>

20
M. Essaïd FASSY FEHRY

Les Espaces de noms XML

z Introduction aux Espaces de noms XML


– Maintenant, si vous voulez créer un document XML qui stocke les
données concernant les livres et leurs auteurs, vous allez avoir
besoin d'utiliser les deux schémas.Î Confusion à cause de
l'élément NOM.

– Cette ambiguïté peut être évitée en utilisant les Espaces de nom.

– Un Espace de nom est une méthode de prévention des conflits


entre des éléments ayant le même nom.

– Dans XML, un Espace de nom est un espace virtuel qui est


assigné ou reconnu par un URI "Uniform Resource Identifier".

21
M. Essaïd FASSY FEHRY

Les Espaces de noms XML

z Introduction aux Espaces de noms XML


– Vous pouvez éviter les conflits entre les schémas Auteur et Livre
en associant l'URI avec les éléments et les attributs qui sont
utilisés dans le document XML.

– Dans notre exemple, vous pouvez utiliser les URI suivantes :


z www.ecomatcybershoppe.com/auteurs
z www.ecomatcybershoppe.com/livres

– Vous pouvez par la suite identifier l'élément NOM de l'auteur


comme suit :

<www.ecomatcybershoppe.com/auteurs:NOM>

22
M. Essaïd FASSY FEHRY

Les Espaces de noms XML

z Introduction aux Espaces de noms XML


– Cependant, cela devient pénible pour un développeur d'utiliser
l'URI complète pour chaque occurrence de l'élément NOM.

– La solution est d'utiliser les alias.


xmlau="www.ecomatcybershoppe.com/auteurs"

<xmlau:NOM>

23
M. Essaïd FASSY FEHRY

Les Espaces de noms XML

z Déclarer des Espaces de nom


– Un Espace de nom peut être déclaré dans un document XSD en
utilisant le mot clé xmlns. C'est un attribut de l'élément schema,
qui est déclaré au début du document.

– La forme générale est la suivante :

xmlns:prefix="URI"

24
M. Essaïd FASSY FEHRY

Les Espaces de noms XML

z Déclarer des Espaces de nom


– Déclaration par défaut

<schema xmlns="http://www.w3.org/2001/XMLSchema">
:
:
</schema>

<element name="LIVRE" type="TypeLivre"/>

25
M. Essaïd FASSY FEHRY

Les Espaces de noms XML

z Déclarer des Espaces de nom


– Déclaration explicite

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

<xs:element name="PRODUIT" type="xs:string" use="required"/>

26
M. Essaïd FASSY FEHRY

Utiliser les attributs d'un schéma dans un autre

Énoncé du Problème 3.D.2


Les filiales de CyberShoppe achètent différents produits de leurs fournisseurs.
Les détails concernant toutes ces commandes sont envoyées à la maison mère
pour faire du reporting. Pour s'assurer de la possibilité d'accéder aux données
indépendamment du matériel ou logiciel utilisé dans la maison mère; les filiales
envoient les données dans un format XML. Lors de la réception de ces
données, la maison mère doit vérifier que toutes les filiales ont spécifié
l'information requise. Elle doit vérifier aussi que ces données sont dans un
format consistant.

Les détails de commande envoyés par les différentes filiales incluent l'ID
Produit, ID Commande, Date de commande, le Nom et l'adresse du
fournisseur, Quantité commandée et le Prix unitaire.

L'ID Produit et l'ID Commande sont utilisés à plusieurs reprises dans plusieurs
documents. L'ID Produit commence par un P suivi de 3 chiffres. De la même
manière, l'ID Commande commence par un C suivi de 3 chiffres. Ces
restrictions doivent être spécifiées dans un emplacement centralisé de façon à
ce qu'ils soient appliqués à différents documents.
27
M. Essaïd FASSY FEHRY

Utiliser les attributs d'un schéma dans un autre

z Liste des tâches


1. Identifier les éléments et les attributs requis pour stocker les
données.
2. Identifier le mécanisme pour appliquer les restrictions sur plusieurs
documents.
3. Déclarer des types de données réutilisables.
4. Déclarer les éléments et les attributs qui seront utilisés pour le
stockage des données.
5. Créer un document XML.
6. Valider le document XML par rapport au schéma.

28
M. Essaïd FASSY FEHRY

Utiliser les attributs d'un schéma dans un autre

z Identifier les éléments et les attributs requis pour stocker


les données.
– ORDREACHAT
z COMMANDE
– DATE
– NOMPRODUIT
– NOMFOURNISSEUR
– ADRESSE
– QUANTITE
– PRIXUNITAIRE

– Les attributs qui seront utilisés pour un produit sont :


z IDCOMMANDE
z IDPROD

29
M. Essaïd FASSY FEHRY

Utiliser les attributs d'un schéma dans un autre

z Identifier le mécanisme pour appliquer les restrictions sur


plusieurs documents.
– L'une des fonctions clés des schémas est leur habilité à supporter
un degré élevé de réutilisabilité.

– Les composants déclarés dans un schéma peuvent être réutilisés


dans un autre. Ceci peut être fait en utilisant les éléments
include ou import.

– L'élément include
z Il est utilisé pour inclure ou référencer un schéma externe qui est
localisé dans une adresse définie.

<include id="ID" schemaLocation="NomFichier"/>

30
M. Essaïd FASSY FEHRY

Utiliser les attributs d'un schéma dans un autre

z Identifier le mécanisme pour appliquer les restrictions sur


plusieurs documents.
– L'élément include
z Il consiste en deux éléments :
– Id : il est utilisé pour spécifier l'ID de l'élément. L'ID doit être unique dans le
document XSD. C'est un attribut optionnel.

– schemaLocation : la valeur de cet attribut spécifie l'emplacement


physique du fichier schéma.

z L'élément schema est l'élément parent de l'élément include.

z La seule restriction existante lors de l'utilisation de l'élément include


c'est que les deux schémas doivent appartenir au même Espace de
nom cible.

31
M. Essaïd FASSY FEHRY

Utiliser les attributs d'un schéma dans un autre

z Identifier le mécanisme pour appliquer les restrictions sur


plusieurs documents.
– L'élément include Potype.xsd
<schema xmlns="http://www.w3.org/2001/XMLSchema"
targetNamespace="www.ecomatcybershoppe.com/achat">
<simpleType name="prstring">
<restriction base="string">
<pattern value="[P]{1}\d{3}"/>
</restriction>
</simpleType>
</schema>

<schema xmlns="http://www.w3.org/2001/XMLSchema"
targetNamespace="www.ecomatcybershoppe.com/achat"
xmlns:prd="www.ecomatcybershoppe.com/achat">
<include schemaLocation="potype.xsd"/>
:
<element name="IDPROD" type="prd:prstring"/>
:
32 </schema>
M. Essaïd FASSY FEHRY

Utiliser les attributs d'un schéma dans un autre

z Identifier le mécanisme pour appliquer les restrictions sur


plusieurs documents.
– L'élément import
z Il assure la même fonction que l'élément include. Cependant, il vous
permet d'accéder à des composants à partir de plusieurs schémas
pouvant appartenir à différents espaces de nom cibles.

z Il consiste en 3 éléments :
– Id : il est utilisé pour spécifier l'ID de l'élément. L'ID doit être unique dans le
document XSD. C'est un attribut optionnel.

– Namespace : est utilisé pour spécifier l'URI de l'espace de nom à laquelle


le schéma importé appartient.

– schemaLocation : la valeur de cet attribut spécifie l'emplacement


physique du fichier schéma.

33
M. Essaïd FASSY FEHRY

Utiliser les attributs d'un schéma dans un autre

z Déclarer des types de données réutilisables.


– Pour créer des types de données réutilisables, on doit créer un
schéma XML qui contient les déclarations des types de données.
Ce schéma XML peut par la suite être inclus dans d'autres
schémas.

– Action
z Pour déclarer des types de données réutilisables pour le stockage de
l'ID Produit et l'ID Commande, on doit taper le code se trouvant dans
la prochaine diapositive.

34
M. Essaïd FASSY FEHRY

Utiliser les attributs d'un schéma dans un autre

z Déclarer des types de données réutilisables.

Potype.xsd

35
M. Essaïd FASSY FEHRY

Utiliser les attributs d'un schéma dans un autre

z Déclarer les éléments et les attributs qui seront utilisés


pour le stockage des données. purchaseorder.xsd

36
M. Essaïd FASSY FEHRY

Utiliser les attributs d'un schéma dans un autre

z Créer un document XML.

purchase.xml

37
M. Essaïd FASSY FEHRY

Utiliser les attributs d'un schéma dans un autre

z Valider le document XML par rapport au schéma.

38
M. Essaïd FASSY FEHRY

Utiliser les attributs d'un schéma dans un autre

Juste une Minute


Les filiales de CyberShoppe envoient les détails des ventes qu'elles ont réalisées à la
maison mère. Pour s'assurer de la possibilité d'accéder aux données indépendamment du
matériel ou logiciel utilisé dans la maison mère; les filiales envoient les données dans un
format XML. Lors de la réception de ces données, la maison mère doit vérifier que toutes
les filiales ont spécifié l'information requise. Elle doit vérifier aussi que ces données sont
dans un format consistant.

Les détails de vente envoyés par les différentes filiales incluent l'ID Produit, ID Transaction,
Date de transaction, ID Client, Quantité commandée et le Prix unitaire.

L'ID Produit, l'ID transaction et l'ID Client sont utilisés à plusieurs reprises dans plusieurs
documents. Créez des types de données réutilisables pour le stockage de ces détails.
Créez aussi un schéma XML qui utilise ces types de données pour le stockage des détails
des ventes. L'ID Produit commence par un P suivi de 3 chiffres. L'ID Transaction
commence par un T suivi de 3 chiffres. L'ID Client commence par un C suivi de 3 chiffres.

39