XSD XML Schema Definition Année universitaire 2014-2015 UP web.

Slides:



Advertisements
Présentations similaires
Données structurées et XML
Advertisements

XML.
Formation universitaire à .NET: Introduction à C#
XML eXtensible Markup Language
Transformation de documents XML
Xavier Blanc Web Services Xavier Blanc
DTD Sylvain Salvati
Le langage de requêtes SPARQL SPARQL Protocol And RDF Query Language
1 Cours 5 Introduction aux schémas XML Éric Laporte Institut Gaspard-Monge Université Paris-Est Marne-la-Vallée.
Cours MIAGE Henry Boccon-Gibod1 XML, langage de structuration Modélisation structurelle en XML de Messages et de Documents.
Cours MIAGE Henry Boccon-Gibod 1 Extensible Mark up Language Modélisation structurelle de Messages e t de Documents en XML XML Schema.
Les espaces de nommage XML par Philippe Poulard 1
XML schema Objectifs Valider un doc. XML pour des contraintes syntaxiques Documenter un type de documents XML caractérisé par des contraintes Encadrer.
Données structurées et XML
XHTML EXtensible HyperText Markup Language. HTML et XML HTML (HyperText Markup Language) et XML (eXtensible Markup Language) sont deux spécifications.
Cours 1.2 : Introduction au langage XML
le langage les éléments
Le typage orienté objet pour les données XML
Domaines nominaux XSLT
Nicolas Singer Maître de conférence, université Champollion
Formulaire HTML Introduction. Définition de formulaire.
CREATION DE FEUILLE DE STYLE pour structuré le document XML
La balise <FORM>:
Langage de structuration des données: XML
Langages du Web Sémantique
Xml/xslt : Extensible Stylesheet Language Transformation réalisé par: saÏd NAÏM.
28 novembre 2012 Grégory Petit
Introduction à la structuration des documents: les techniques M2: Gestion des connaissances.
XML: Syntaxe XML, DTD et Schémas
Notions sur le XML Réfs : manuel p 149. Introduction Le XML (eXtensible Markup Language) est un standard d'échange de données. Il fait partie comme le.
Structures de données IFT Abder Alikacem La classe string Département dinformatique et de génie logiciel Édition Septembre 2009 Département dinformatique.
Introduction au XML Choopan Rattanapoka Université Louis-Pasteur, Starsbourg.
<XML/> Bruno GRILHERES (EADS CASSIDIAN)
Rappel (très) succint d’éléments techniques (XML, DTD, XSL, PHP)
STAF 2X XSL/FO Glaus & Ruckstuhl Mars © Glaus & Ruckstuhl TECFA Programme du 18 et 19 mars Revision XML Introduction à XSL/FO (intérêts et.
Principes de programmation
Implémentation dun parseur validant pour YML/DML Travail de Master Présentation finale Catherine Pugin 21 avril 2005
Initiation à XML Sebti Foufou.
8 - XML Cours XML.
1 Programmation Web II 2 ème année Licence Appliquée IAG Faculté des Sciences Economiques et de Gestion de Nableul Université 7 novembre à Carthage Années.
XML-schema. Pourquoi XML-schema Les DTD : Pas de typage, peu de contraintes sur les contenus nombre d'apparitions d'un élément à choisir entre 0 et 1.
Le langage XML.
XPath XML Path UP Web Année universitaire
Les Schémas XML Le standard W3C.
Programmation Web : Introduction à XML
Programmation Web : Schémas XSD Jérôme CUTRONA 19:27:07 Programmation Web
Technologies web et web sémantique TP3 - XML. XML eXtensible Markup Language (langage extensible de balisage) – Caractéristiques: méta-langage = un langage.
1 Schémas XML - cours 1 Éric Laporte Institut Gaspard-Monge Université Paris-Est Marne-la-Vallée.
SMIL Synchronized Multimedia Integration Language
MJ. Blin et M. CsernelPoleInfo31 XML et ses environnements Documents XML bien formés Prologue Arbre d'éléments Attributs Commentaires Entités internes.
Module : Langage XML (21h)
Modélisation des documents: DTD et Schéma
1. Introduction 2. DTD 3. Schémas
Page 1 © Expert-IT s.a. - Développer des projets en XML Pratique.
Création et Gestion de Tables
Document Type Definition (DTD) Plan 2.1Introduction 2.2Déclaration de Document Type 2.3Déclaration d’élément Type 2.3.1Séquences, Choix, indicateurs d’Occurrence.
eXtensible Markup Language. Généralités sur le XML.
Les vues Une vue: c’est une relation virtuelle. Définie par:
L T I Laboratoire de Téléinformatique 2 Projet de semestre Parseur XML basé sur la DTD : Buts –Utiliser la grammaire définissant un type de fichiers XML.
ACCARY-BARBIER / CNAM - Cycle C ère partie : Technologies XML  CHAPITRE 1 : XML et DTD  CHAPITRE 2 : Schémas XML  CHAPITRE 3 : XPath.
SOAP et les RPC XML SOAP WSDL RPC. Rappels sur le XML Langage avec des balises Très lisible Pour stocker des données Séparation entre contenu et présentation.
XML : un métalangage pour la description de documents structurés XML a été défini par le consortium W3 en fonction de 2 objectifs: Compenser les limitations.
Le langage XML Documents bien formés Un document XML est dit bien formé lorsque le document est correct sans toutefois posséder une DTD. Le prologue du.
XML les données réellement portables La nécessité d’un format de données universel et lisible se faisait sentir depuis longtemps, aujourd’hui avec le développement.
XSLT. Les documents XML peuvent avoir dans leur prologue une instruction de traitement xml-stylesheet. Cette instruction de traitement indique au navigateur.
INF2005– Programmation web– A. Obaid Variantes de HTML.
Jean Vieille Research community Consulting group
Les bases de données Séance 4 Construction du Modèle Physique (la BDD)
Extensions à la spécification XML Le "plus petit cercle" XML Yves Bekkers Mise à jour : 9 octobre 2003.
DTD - Y. Bekkers - IFSIC1 DTD Document Type Definition Yves Bekkers Mise à jour : 31 mai 2016.
Transcription de la présentation:

XSD XML Schema Definition Année universitaire 2014-2015 UP web

Objectifs Définition d'un vocabulaire et d'une grammaire XML. Apprendre le langage XSD

Plan L’objectif de XSD Types simples en XSD Types complexes en XSD Héritage Contraintes d’intégrité Les espaces de noms XML

Introduction Application « A » Application « B » <XML> <product> <ID> 123</ID> <name>shoes</name> <produit> <id> 123</id> Représentation d’une même donnée Services web et SOA -1-

Introduction Un schéma XML définit: 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). Un schéma XML définit: Les éléments permis dans le document Les attributs associés à ces éléments La structure du document et les types de données Services web et SOA -2-

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. Services web et SOA -3-

DTD vs XSD DTD XSD Nouveau langage Syntaxe particulière Langage issu de XML Syntaxe XML Types de données limités PCDATA , CDATA  Types de données plus riches integer, byte, string, float, … Nombre d'occurrence très général *, + et ? Nombre d’occurrence plus précis [1,100] , ]2,100] Aucune contrainte sur le contenu des éléments/attributs Définition des contraintes sur le contenu des éléments/attributs mot de passe de longueur 8 email contenant le caractère @ Extensible

Vers un document XML valide XSD <produit quantite= "80"> <id> 123</id> <produit> Document XML bien formé Document XML valide Respect de la syntaxe XML Respect des règles XSD Services web et SOA -4-

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 Services web et SOA -5-

Structure d’un schema 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 <?xml version="1.0" ?> <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"> … </xs:schema> Services web et SOA -6-

Déclaration des éléments <xs:element name="theName" type="theType" /> Valeur par défaut <xs:element name="firstName" type="xs:string" default="Mickael" /> L’attribut default de l’élément firstName précise une valeur au cas où elle serait absente Valeur fixée <xs:element name="firstName" type="xs:string" fixed="Mickael" /> L’attribut fixed de l’élément firstName précise une valeur et ne peut être modifiée Services web et SOA -7-

Déclaration des attributs <xs:attribute name="theName" type="theType" use="required" /> (required ou optional) Valeur par défaut <xs:attribute name="remark" type="xs:string" default="Remarque à préciser" /> L’attribut default de l’attribut remark précise une valeur au cas où elle serait absente Valeur fixée <xs:attribute name="remark" type="xs:string" fixed="Remarque à préciser" /> L’attribut fixed de l’attribut remark précise une valeur et ne peut être modifiée Services web et SOA -8-

Les types de données 1/2 Les attributs sont de types simples Les éléments sont de: Types simples Types complexes un élément de type simple ne peut comporter ni attributs, ni de sous éléments un élément de type complexe permet d’exprimer des sous éléments et permet également d’y associer des attributs Services web et SOA -9-

Les types de données 2/2 Eléments de type complexe Eléments de type simple <film type="action " /> <film/> <film type= "action "> Gladiator </film> <film>Gladiator</film> <film> <annee>2000</annee> <realisateur>R.Scott</realisateur> </film> À remplacer ce slide <film type= "action " > <annee>2000</annee> <realisateur>R.Scott</realisateur> </film> Services web et SOA -10-

Les types simples 1/8 Les principaux types simples prédéfinis 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… Services web et SOA -11-

Les types simples: restriction Les types simples dérivés On peut créer de nouveaux types simples en dérivant des types simples existants (prédéfinis ou dérivés) Un nouveau type simple peut être défini par restriction ou extension Exemple: L’age est un entier compris entre 1 et 100 L’email est une chaîne de caractères qui doit contenir le caractère @ Restriction Type simple Nouveau type simple Services web et SOA -12-

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 Les restrictions passent par l’utilisation des facettes Une facette permet de définir des contraintes sur le nouveau type à créer Services web et SOA -13-

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> <xs:simpleType name="newType" > ... </xs:simpleType> La restriction est exprimée avec la balise <xs:restriction> Nouveau Type simple <xs:simpleType name="newType" > <xs:restriction base="type" > ... </xs:restriction> </xs:simpleType> Type simple de départ Services web et SOA -14-

Les types simples: restriction Les principales facettes Facette length <xs:element name=" password" type ="passwordType" /> <xs:simpleType name ="passwordType" >     <xs:restriction base="xs:string">       <xs:length value="8"/>     </xs:restriction> </xs:simpleType> Facette minLength, maxLength <xs:element name="password" type="passwordType" /> <xs:simpleType name =" passwordType" >     <xs:restriction base="xs:string">       <xs:minLength value="5"/>       <xs:maxLength value="8"/>     </xs:restriction> </xs:simpleType> Services web et SOA -15-

Les types simples: restriction Les principales facettes Facette minLInclusive, minExclusive, maxInclusive, maxExclusive <xs:element name=" age" type ="ageType" /> <xs:simpleType name="ageType"> <xs:restriction base="xs:int"> <xs:minInclusive value="1" /> <xs:maxInclusive value="100" /> </xs:restriction> </xs:simpleType> Services web et SOA -16-

Les types simples: restriction Les principales facettes Facette enumeration <xs:element name=" sexe" type ="sexeType" /> <xs:simpleType name="sexeType" > <xs:restriction base="xs:string"> <xs:enumeration value="homme" /> <xs:enumeration value="femme" /> <xs:enumeration value="indéterminé" /> </xs:restriction> </xs:simpleType> Trois valeurs sont autorisées Services web et SOA -17-

Les types simples: restriction Les principales facettes Facette pattern <xs:element name="email" type ="emailType" /> <xs:simpleType name="emailType"> <xs:restriction base="xs:string"> <xs:pattern value= " [a-z]*@[a-z]* " /> </xs:restriction> </xs:simpleType> Toutes les chaînes de caractères de type emailType doivent respecter ce pattern [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) Services web et SOA -18-

Les types simples: extension list Liste de valeurs d’un même type simple Fichier XSD Fichier XML <xs:element name="IntList" type="IntListType" /> <xs:simpleType name="IntListType" > <xs:list itemType="xs:integer" /> </xs:simpleType> <?xml version ="1.0" ?> <IntList>20 15 95 95</IntList> L’élément xs:list définit une liste de valeurs d’un même type simple. Le type simple de base est donné dans l’attribut itemType. Il ne s’agit pas de listes générales comme dans certains langages de programmation. Il s’agit uniquement de listes de valeurs séparées par des espaces. Services web et SOA -13-

Les types simples: extension union(1/2) Union de types simples (Exemple) Fichier XSD <xs:element name="jeansSize" type ="sizeType" /> <xs:simpleType name="sizeType" > <xs:union memberTypes ="xs: positiveInteger sizeBystring" /> </xs:simpleType> <xs:simpleType name=" sizeByString " > <xs:restriction base ="xs: string" /> <xs:enumeration value="small"/> <xs:enumeration value="medium"/> <xs:enumeration value="large"/> <xs:restriction /> L’élément xs:union définit un nouveau type simple dont les valeurs sont celles des types listés dans l’attribut memberTypes Services web et SOA -13-

Les types simples: extension union(1/2) Union de types simples (Exemple) Fichier XML <?xml version ="1.0"?> <jeanSize>40</jeanSize> <jeanSize>medium</jeanSize> Services web et SOA -13-

Les types complexes 1/8 Un élément de type complexe peut contenir d'autres éléments et / ou des attributs Quatre combinaisons d'éléments complexes sont à distinguer Eléments vides qui ne contiennent que des attributs Eléments de type simple qui contiennent des attributs Eléments qui peuvent contenir des sous éléments Eléments qui contiennent des attributs et des sous éléments La création d'un éléments de type complexe est réalisée avec la balise <xs:complexType> <xs:complexType name="newType" > ... </xs:complexType> Services web et SOA -19-

Les types complexes 2/8 Eléments vides qui ne contiennent que des attributs <child remark="He's too much" old="3" sexe="homme"/> <xs:element name="child" type ="childType" /> <xs:complexType name ="childType" > <xs:attribute name="remark" type="xs:string" use="required" /> <xs:attribute name="old" type= "xs:int" /> <xs:attribute name="sexe" type="xs:string" /> </xs:complexType> Services web et SOA -20-

Les types complexes 3/8 Eléments qui peuvent contenir des sous éléments <person> <name>…</name> <firstName>…</firstName> <old>…</old> <email>…</email> </person> <xs:element name="person" type="personType "  /> <xs:complexType name="personType " > <xs:sequence> <xs:element name="name" type="xs:string" /> <xs:element name="firstName" type="xs:string" /> <xs:element name="old" type="ageType" /> <xs:element name="email" type="emailType" /> </xs:sequence> </xs:complexType> sequence exprime que les sous éléments doivent apparaître dans l’ordre spécifié Services web et SOA -21-

Les types complexes 4/8 Eléments qui peuvent contenir des sous éléments Indicateurs d’ordre XSD permet d'exprimer trois sortes d'indicateurs d'ordre: sequence all choice all tous les sous éléments peuvent apparaître dans n'importe quel ordre <xs:complexType name= "personType"> <xs:all> <xs:element name="name" type="xs:string" /> <xs:element name="firstName" type="xs:string" /> <xs:element name="old" type="ageType" /> <xs:element name="email" type=“emailType" /> </xs:all> </xs:omplexType> <person> <name>…</name> <email>… </email> <old>…</old> <firstName>…</firstName> </person> Services web et SOA -22-

Les types complexes 5/8 Eléments qui peuvent contenir des sous éléments Indicateurs d’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" /> <xs:element name="firstName" type="xs:string" /> <xs:element name="old" type="ageType" /> <xs:element name="email" type= "emailType" /> </xs:choice> </xs:complexType> <person> <name>…</name> </person> Services web et SOA -23-

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 Pour définir une valeur infinie, fixer la valeur à unbounded <xs:complexType name= "personType"> <xs:sequence> <xs:element name="name" type="xs:string" /> <xs:element name="firstName" type="xs:string" /> <xs:element name="old" type="ageType" minOccurs="0" /> <xs:element name="email" type= " emailType" minOccurs="2" maxOccurs="unbounded"/> </xs:sequence> </xs:complexType> old est un élément optionnel Services web et SOA -24-

Les types complexes 7/8 Eléments qui peuvent contenir des sous éléments Même si on a un seul élément fils, on doit utiliser un indicateur d’ordre <xs:complexType name= "personType"> <xs:sequence> <xs:element name="name" type="xs:string" /> </xs:sequence> </xs:complexType> Services web et SOA -25-

Les types complexes 8/8 Eléments qui peuvent contenir des sous éléments et des attributs (on déclare les éléments avant les attributs) <xs:complexType name= "personType"> <xs:sequence> <xs:element name="name" type="xs:string" /> <xs:element name="firstName" type="xs:string" /> <xs:element name="old" type="ageType" /> <xs:element name="email" type= "emailType" /> </xs:sequence> <xs:attribute name="id" type="xs:int" /> </xs:complexType> <person id ="139" > <name>…</name> <firstName>…</firstName> <old>…</old> <email>…</email> </person> Services web et SOA -26-

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> <xs:element name ="poids" type ="poidsType" /> <xs:complexType name ="poidsType" > <xs:simpleContent> <xs:extension base="xs:integer"> <attribute name="unite" type="xs:string" /> </xs:extension> </xs:simpleContent> </xs:complexType>

L’héritage en XSD Héritage d’un élément complexe Possibilité de définir un nouveau type complexe sur la base d'un type complexe existant <adress> <receiver></receiver> <street></street> <city></city> </address> Type complexe existant <adressUS> <receiver></receiver> <street></street> <city></city> <state></state> <zip></zip> </adressUS> Nouveau type complexe

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" /> <xs:element name="street" type="xs:string" /> <xs:element name="city" type="xs:string" /> </xs:sequence> </xs:complexType> Le type addressType définit trois sous éléments en séquence <xs:complexType name="usAddressType"> <xs:complexContent> <xs:extension base="addressType"> <xs:sequence> <xs:element name="state" type="xs:string" /> <xs:element name="zip" type="xs:string" /> </xs:sequence> </xs:extension> </xs:complexContent> </xs:complexType> Le type usAddressType propose une extension avec deux nouveaux sous éléments en séquence

Espace de noms XML 1/6 Problème Fusion des 2 documents <employe> <id>E0000001</id> <nom>Smith</nom> <prenom>John </prenom> </employe> <departement> <id>D001</id> <nom>Marketing</nom> </departement> Fusion des 2 documents <entreprise> <departement> <id>D001</id> <nom>Marketing</nom> <employe> <id>E0000001</id> <nom>Smith</nom> <prenom>John </prenom> </employe> </departement> </entreprise> Confusion sur le sens des éléments id et nom 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> <emp:id>E0000001</emp:id> <emp:nom>Smith</emp:nom> <emp:prenom>John </emp:prenom> </emp:employe> <dep:departement> <dep:id>D001</dep:id> <dep:nom>Marketing</dep:nom> </dep:departement> Fusion des 2 documents <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> Namespaces are similar to packages in Java in several ways: A package in Java can have many reusable classes and interfaces. Similarly, a namespace in XML can have many reusable elements and attributes. To use a class or interface in a package, you must fully qualify that class or interface with the package name. Similarly, to use an element or attribute in a namespace, you must fully qualify that element or attribute with the namespace. A Java package may have an inner class that is not directly inside the package, but rather "belongs" to it by the virtue of its enclosing class. The same is true for namespaces: there could be elements or attributes that are not directly in a namespace, but belongs to the namespace by virtue of its parent or enclosing element. This is a transitive relationship. If a book is on the table, and the table is on the floor, then transitively, the book is on the floor; albeit the book is not directly on the floor. Services web et SOA -28-

Espace de noms XML 3/6 Déclaration des espaces de noms Un espace de nom associe un préfixe à un URI L’URI (Uniform Resource Identifier) sert à identifier un espace de noms Le préfixe est une chaîne utilisée pour référencer l’espace de nom dans un fichier XML.   employe id nom URI: http://employe.com Préfixe: emp departement id nom URI: http://departement.com Préfixe: dep Services web et SOA -33-

Espace de noms XML 4/6 Déclaration des espaces de noms La déclaration de l'espace de noms se fait au moyen de l'attribut xmlns <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> Services web et SOA -29-

Espace de noms XML 5/6 Déclaration des espaces de noms <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> Fusion des 2 documents <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 Espace de nom pour XSD <?xml version="1.0" ?> <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"> … </xs:schema> Services web et SOA -31-

Espace de noms XSD 1/4 XML Schema Namespace Document XML Schema element complexType string integer boolean XML Schema Namespace http://www.w3.org/2001/XMLSchema 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"> <xs:element name="departement" type="depType"/> <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:schema> Document XML 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 id nom departemenType Target Namespace http://www.departement.org Le targetNamesapce est utilisé par le fichier XML pour la validation <departement> <id>D001</id> <nom>Marketing</nom> </departement> Document XML Services web et SOA

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 XML Schema Instance XML Schema Instance XML Schema Instance XML XML XML Services web et SOA -34-

Espace de noms XSD 4/4 Association d’un fichier XML à un fichier XSD <departement xmlns="http://www.departement.org" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.departement.org departement.xsd"> xmlns Espace de noms des éléments utilisés dans le fichier XML xmlns:xsi Il s’agit d’une instance de schema XSD xsi:schemaLocation Localiser le document XSD Services web et SOA -35-

En résumé XSD est un langage permettant la définition de la structure d’un document XML XSD offre une richesse de types Types simples, types complexes Restriction, extension L’association d’un fichier XML à un fichier XSD passe par l’utilisation des espaces de noms. Services web et SOA -36-

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