3 XSD PDF
3 XSD PDF
3 XSD PDF
Module SOA
A.U 2017-2018
Objectifs
XSD 2
Plan
• L’objectif de XSD
• Types simples en XSD
• Types complexes en XSD
• Héritage
• Contraintes d’intégrité
• Les espaces de noms XML
XSD 3
Introduction
Application « A » Application « B »
<XML> <XML>
<produit> <product>
<id> 123</id> <ID> 123</ID>
</produit> <name>shoes</name>
</product>
XSD 4
Objectifs
• But :Définir la structure d’un document XML pour que tous les
intermédiaires suivent le même modèle grâce aux schemas
XSD (XML Schema Definition).
XSD 5
Présentation de XSD
• Alternative au DTD
• Recommandations W3C
• Issu de XML
=> Tous les outils (validateurs, parseurs, processeurs, ...) mais également les
langages (XSLT, XPath, ...) qui permettent de travailler les documents XML
sont utilisables sur des XSD.
XSD 6
DTD (Document Type Definition)
<!ELEMENT boutique (telephone*)>
<!ELEMENT telephone (marque, modele)>
<!ELEMENT marque (#PCDATA)>
<!ELEMENT modele (#PCDATA)>
<?xml version = "1.0" ?>
<boutique>
<telephone>
<marque>Samsung</marque>
<modele>Galaxy S5</modele>
</telephone>
<telephone>
<marque>Apple</marque>
<modele>iPhone 6</modele>
</telephone>
</boutique>
XSD 7
DTD vs XSD
DTD XSD
Nouveau langage Syntaxe particulière Langage issu de XML Syntaxe XML
Types de données limités Types de données plus riches
PCDATA , CDATA integer, byte, string, float, …
Nombre d'occurrence très général *, + Nombre d’occurrence plus précis
et ? [1,100] , ]2,100]
Aucune contrainte sur le contenu des Définition des contraintes sur le contenu des
éléments et attributs éléments/attributs
mot de passe de longueur 8
email contenant le caractère @
Extensible
XSD 8
Vers un document XML valide
XML XSD
XSD 9
Vers un document XML valide
Un document XML est valide si et seulement s’il est bien formé
Valide
Respect des règles XSD
Bien formé
Respect de la syntaxe XML
XSD 10
Structure d’un schéma XML
• Un document schema XML est défini dans un fichier dont l’extension est
*.xsd
• Comme tout document XML, un schéma XML commence par la prologue
XML et a un élément racine
• L’élément <xs:schema> est la racine de tout document Schema XML
Fichier XSD
XSD 11
Déclaration des éléments
Valeur fixée
(required ou optional)
Valeur par défaut
L’attribut default de l’attribut remark précise une valeur au cas où elle serait
absente
Valeur fixée
L’attribut fixed de l’attribut remark précise une valeur et ne peut être modifié e
XSD 13
Les types de données 1/2
o Types complexes
XSD 14
Les types de données 2/2
Eléments de type simple Eléments de type complexe
<film>
<annee>2000</annee>
<realisateur>R.Scott</realisateur>
</film>
• xs:int
• xs:boolean
• xs:string
• xs:long
• xs:float
• xs:positiveInteger : 1, 2, …
• xs:negativeInteger : …, -2, -1
• xs:nonNegativeInteger : 0, 1, 2, …
• xs:nonPositiveInteger : …, -2, -1, 0
• xs:unsignedLong : 0, 1, … 18446744073709…
XSD 16
Les types simples: restriction
XSD 17
Les types simples: restriction
Les types simples dérivés
Les restrictions sur les types simples permettent de dériver de nouveaux types à partir de types
existants
Une facette permet de définir des contraintes sur le nouveau type à créer
XSD 18
Les types simples: restriction
Les types simples dérivés
La création de nouveaux types simples est réalisée avec la balise <xs:simpleType>
XSD 21
Les types simples: restriction
Les principales facettes
Facette enumeration
<xs:element name=" sexe" type ="sexeType" />
<xs:simpleType name="sexeType" >
<xs:restriction base="xs:string"> Trois valeurs sont
<xs:enumeration value="homme" /> autorisées
<xs:enumeration value="femme" />
<xs:enumeration value="indéterminé" />
</xs:restriction>
</xs:simpleType>
XSD 22
Les types simples: restriction
Les principales facettes
Facette pattern
<xs:element name="email" type ="emailType" />
<xs:simpleType name="emailType"> Toutes les chaînes de caractères de
<xs:restriction base="xs:string"> type emailType doivent respecter
ce pattern
<xs:pattern value= " [a-z]*@[a-z]* " />
</xs:restriction>
</xs:simpleType>
[a-z]* 0 ou plusieurs lettre(s)
([a-z][A-Z])+ 1 ou plusieurs paires de lettres min et
maj
sToP, Stop,STOP,stop
male|female Liste de choix
[a-zA-Z0-9]{8} 8 caractères (chiffre, lettre min, lettre
maj)
XSD 23
Les types complexes 1/8
Un élément de type complexe peut contenir d'autres éléments
et / ou des attributs
La création d'un éléments de type complexe est réalisée avec la balise <xs:complexType>
XSD 24
Les types complexes 2/8
Eléments vides qui ne contiennent que des attributs
XSD 25
Les types complexes 3/8
Eléments qui peuvent contenir des sous éléments
<person>
<name>…</name>
<firstName>…</firstName>
<old>…</old>
<email>…</email>
</person>
all tous les sous éléments peuvent apparaître dans n'importe quel ordre
choice exprime qu'un seul élément parmi tous les sous éléments peut apparaître
XSD 28
Les types complexes 6/8
Eléments qui peuvent contenir des sous éléments
Indicateurs d’occurence
maxOccurs : précise le nombre d'occurrence maximum
minOccurs : précise le nombre d'occurrence minimum
Si les valeurs de maxOccurs ou minOccurs ne sont pas explicitement précisées, la valeur par défaut est de 1
XSD 30
Les types complexes 8/8
Eléments qui peuvent contenir des sous éléments et des attributs
XSD 31
L’héritage en XSD
Héritage d’un élément simple
Possibilité de définir un nouveau type sur la base d'un type simple existant
Utilisation de la balise <xs:simpleContent>
<poids>67</poids>
extension
<poids unite=“kg“ >67</poids>
<adress>
<receiver></receiver>
Type complexe
<street></street>
existant
<city></city>
</address>
<adressUS>
<receiver></receiver>
Nouveau type
<street></street>
complexe
<city></city>
<state></state>
<zip></zip>
</adressUS>
XSD 33
L’héritage en XSD
Héritage d’un élément complexe
Utilisation de la balise <xs:complexContent>
<xs:complexType name="addressType">
<xs:sequence>
<xs:element name="receiver" type="xs:string" />
Le type addressType définit trois <xs:element name="street" type="xs:string" />
sous éléments en séquence <xs:element name="city" type="xs:string" />
</xs:sequence>
</xs:complexType>
<xs:complexType name="usAddressType">
<xs:complexContent>
Le type usAddressType
<xs:extension base="addressType">
propose une extension
<xs:sequence>
avec deux nouveaux
<xs:element name="state" type="xs:string" />
sous éléments en
<xs:element name="zip" type="xs:string" />
séquence
</xs:sequence>
</xs:extension>
</xs:complexContent>
XSD 34
</xs:complexType>
Espace de noms XML 1/6
Problème
<employe> <departement>
<id>E0000001</id> <id>D001</id>
<nom>Smith</nom> <nom>Marketing</nom>
<prenom>John </prenom> </departement>
</employe>
<entreprise>
<departement>
<id>D001</id>
<nom>Marketing</nom> Confusion sur le
<employe> sens des éléments
<id>E0000001</id>
id et nom
<nom>Smith</nom>
<prenom>John </prenom>
</employe>
</departement>
</entreprise>
35
XSD
Espace de noms XML 2/6
Objectif Distinguer les éléments et les attributs de différentes documents XML qui ont le même nom
<dep:departement>
<dep:id>D001</dep:id>
<dep:nom>Marketing</dep:nom>
<emp:employe>
<emp:id>E0000001</emp:id>
<emp:nom>Smith</emp:nom>
<emp:prenom>John </emp:prenom>
</emp:employe>
</dep:departement>
36
XSD
Espace de noms XML 3/6
Déclaration des espaces de noms
employe
URI: http://employe.com id
Préfixe: emp nom
<element xmlns:prefix="URI">
<emp:employe xmlns:emp="http://emloye.com">
<emp:id>E0000001</emp:id>
<emp:nom>Smith</emp:nom>
<emp:prenom>John </emp:prenom>
</emp:employe>
<dep:departement xmlns:dep="http://departement.com">
<dep:id>D001</dep:id>
<dep:nom>Marketing</dep:nom>
</dep:departement>
XSD 38
Espace de noms XML 5/6
Déclaration des espaces de noms
<entreprise xmlns:dep="http://departement.com"
xmlns:emp="http://emloye.com" >
<dep:departement>
<dep:id>D001</dep:id>
<dep:nom>Marketing</dep:nom>
<emp:employe>
<emp:id>E0000001</emp:id>
<emp:nom>Smith</emp:nom>
<emp:prenom>John </emp:prenom>
</emp:employe>
</dep:departement>
</entreprise> 39
XSD
Espace de noms XML 6/6
Déclaration des espaces de noms
<?xml version="1.0"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
…
</xsl:stylesheet >
XSD 40
Espace de noms XSD 1/4
schema
element
complexType
XML Schema Namespace string
http://www.w3.org/2001/XMLSchema integer
boolean
Les éléments et les types appartenant au XML Schema Namespace sont utilisés pour écrire un
document XSD
<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
xmlns="http://www. departement.org"
targetNamespace="http://www. departement.org">
Document XML <xs:element name="departement" type="depType"/>
<xs:complexType name="depType">
Schema <xs:sequence>
<xs:element name="id" type="xs:integer"/>
<xs:element name="nom" type="xs:string"/>
</xs:sequence>
</xs:complexType>
</xs:schema>
Les nouveaux types et élément déclarés dans le document XSD appartiennent à un nouveau espace de
nom: c’est le tragetNamespace
departement
Target Namespace id
http://www.departement.org nom
departemenType
Le targetNamesapceest utilisé par le fichier XML pour la
validation
<departement>
Document XML <id>D001</id>
<nom>Marketing</nom> XSD 41
</departement>
Espace de noms XSD 2/4
Espaces de noms XSD
Fichier XSD
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
xmlns:dep="http://www.departement.org"
targetNamespace="http://www.departement.org" >
<xs:complexType name="depType" >
<xs:sequence>
<xs:element name="id" type="xs:integer"/>
<xs:element name="nom" type="xs:string"/>
</xs:sequence>
</xs:complexType>
<xs:element name="departement" type=" dep:depType "/>
</xs:schema>
XSD 42
Espace de noms XSD 3/4
Association d’un fichier XML à un fichier XSD
XML Schema
XSD
XSD 43
Espace de noms XSD 4/4
Association d’un fichier XML à un fichier XSD
Fichier XML
<departement xmlns="http://www.departement.org"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.departement.org departement.xsd">
XSD 44
En résumé
• XSD est un langage permettant la définition de la structure d’un document XML
• L’association d’un fichier XML à un fichier XSD passe par l’utilisation des espaces de
noms.
XSD 45
Références
• http://www.liafa.jussieu.fr/~carton/Enseignement/XML/Cours/Schemas/
• http://www.grappa.univ-lille3.fr/~torre/Enseignement/Cours/XML/xmlschema.php
• http://www.teluq.ca/inf6450/mod1/chapitre4.xml
XSD 46