Explorer les Livres électroniques
Catégories
Explorer les Livres audio
Catégories
Explorer les Magazines
Catégories
Explorer les Documents
Catégories
Année universitaire
2014-2015 UP web
Objectifs
• L’objectif de XSD
• Types simples en XSD
• Types complexes en XSD
• Héritage
• Contraintes d’intégrité
• Les espaces de noms XML
Introduction
<XML> <XML>
<produit> <product>
<id> 123</id> <ID> 123</ID>
<produit> <name>shoes</name>
<product>
• 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.
XML XSD
Valide
Respect des règles XSD
Bien formé
Respect de la syntaxe XML
Fichier XSD
(required ou optional)
Valeur par défaut
Valeur fixée
<film>
<annee>2000</annee>
<realisateur>R.Scott</realisateur>
</film>
L’élément xs:union définit un nouveau type simple dont les valeurs sont
celles des types listés dans l’attribut memberTypes
Fichier XML
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
<xs:complexType name= "personType">
<xs:choice>
<xs:element name="name" type="xs:string" /> <person>
<xs:element name="firstName" type="xs:string" /> <name>…</name>
<xs:element name="old" type="ageType" /> </person>
<xs:element name="email" type= "emailType" />
</xs:choice>
</xs:complexType>
<poids>67</poids>
extension
<poids unite=“kg“ >67</poids>
<adress>
<receiver></receiver>
Type
<street></street>
complexe
<city></city>
existant
</address>
<adressUS>
<receiver></receiver>
Nouveau type
<street></street>
complexe
<city></city>
<state></state>
<zip></zip>
</adressUS>
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 <xs:element name="street" type="xs:string" />
définit trois sous <xs:element name="city" type="xs:string" />
éléments en </xs:sequence>
séquence </xs:complexType>
<xs:complexType name="usAddressType">
<xs:complexContent>
Le type
<xs:extension base="addressType">
usAddressType
<xs:sequence>
propose une
<xs:element name="state" type="xs:string" />
extension
<xs:element name="zip" type="xs:string" />
avec deux nouveaux
</xs:sequence>
sous éléments en
</xs:extension>
séquence
</xs:complexContent>
</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>
<nom>Smith</nom> id et nom
<prenom>John </prenom>
</employe>
</departement>
</entreprise>
Services web et SOA -27-
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
Solution Utiliser les espaces de noms XML
<emp:employe> <dep:departement>
<emp:id>E0000001</emp:id> <dep:id>D001</dep:id>
<emp:nom>Smith</emp:nom> <dep:nom>Marketing</dep:nom>
<emp:prenom>John </emp:prenom> </dep:departement>
</emp:employe>
<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>
Services web et SOA -28-
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>
<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>
Services web et SOA -30-
Espace de noms XML 6/6
Déclaration des espaces de noms
departement
Target Namespace id
http://www.departement.org nom
departemenType
Le targetNamesapce est utilisé par le fichier
XML pour la validation
<departement>
Document XML <id>D001</id>
<nom>Marketing</nom>
Services web et SOA </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"
elementForDefault=“qualified“>
<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>
xmlns:xs espace de nommage des éléments et types XSD
xmlns:dep espace de nommage des nouveaux types définis par le
programmeur
targetNamespace espace de nommage du schema XSD cible
C’est l’espace de noms qui sera référé par le fichier XML
Services web et SOA -33-
Espace de noms XSD 3/4
Association d’un fichier XML à un fichier XSD
XML Schema
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">
• http://www.liafa.jussieu.fr/~carton/Enseignement/XML/Cours
/Schemas/
• http://www.grappa.univ-lille3.fr/~torre/Enseignement/Cours/X
ML/xmlschema.php
• http://www.teluq.ca/inf6450/mod1/chapitre4.xml
48