2 ème partie: XML SCHEMA



Documents pareils
Master d Informatique Corrigé du partiel novembre 2010

Préparation d'un fichier XML pour le reporting des activités avec l'étranger concernant les services, les transferts et les marchandises. Ed.

PIVOT. Pivot/Querier Documentation technique XML/XSD/XSLT

Langage HTML (2 partie) <HyperText Markup Language> <tv>lt La Salle Avignon BTS IRIS</tv>

XML avec Oracle. Par Christian Soutou. Maître de conférences, IUT de Blagnac, Université de Toulouse Le Mirail

XML par la pratique Bases indispensables, concepts et cas pratiques (3ième édition)

Web Application Models

Débuter avec EXPRESS. Alain Plantec. 1 Schema 2

L architecture des services Web

Structurer ses données : les tableaux. Introduction à la programmation

TP n 2 Concepts de la programmation Objets Master 1 mention IL, semestre 2 Le type Abstrait Pile

XML : documents et outils

MINISTÈRE DES SOLIDARITÉ ET DE LA COHÉSION SOCIALE

Cúram JMX - Guide de configuration

UML. Diagrammes de classes (suite) Delphine Longuet.

Auguria_PCM Product & Combination Manager

Faculté de Génie Chaire industrielle en infrastructures de communication. La technologie XML. Wajdi Elleuch

OCL - Object Constraint Language

BD et XML : Exercices

OASIS Date de publication

Plan. Exemple: Application bancaire. Introduction. OCL Object Constraint Language Le langage de contraintes d'uml

Utilitaires méconnus de StrataFrame

XML et Bases de données. Les bases de données XML natives.

Chapitre IX. L intégration de données. Les entrepôts de données (Data Warehouses) Motivation. Le problème

Cours Informatique Master STEP

Chapitre 3 LE MODELE RELATIONNEL ET SQL (DDL)

Module BDWEB. Maîtrise d informatique Cours 9 - Xquery. Anne Doucet. anne.doucet@lip6.fr

Thierry BOULANGER. par la pratique. Bases indispensables Concepts et cas pratiques XML. 3 ième édition. Nouvelle édition

<?xml version="1.0" encoding="iso " standalone="yes"?>

AdressePostale 1.2 Description d une adresse postale 16/01/2004

Ingénierie des Modèles. Méta-modélisation

Pour signifier qu'une classe fille hérite d'une classe mère, on utilise le mot clé extends class fille extends mère

Recherche dans un tableau

ech-0148 Motifs d annonce Entreprises - taxes de domaine

Qu'est-ce que XML? XML : Extensible Markup Language. Exemple de document SGML SGML

Modèle conceptuel : diagramme entité-association

Outils logiciels pour l'ingénierie documentaire

Approche Contract First

Flex. Lire les données de manière contrôlée. Programmation Flex 4 Aurélien VANNIEUWENHUYZE

Design et implémentation d un logiciel de validation et de génération de configurations réseaux

Accès à l'information XML par des requêtes XQuery au travers de son XSchema

Création de formulaires interactifs

Olivier Mondet

INTRODUCTION A JAVA. Fichier en langage machine Exécutable

as Architecture des Systèmes d Information

Séance 1 Introduction aux bases de données

Diagramme de classes

Bases de Données. Plan

CxF - Color exchange Format - Format d'échange de teintes. Le langage universel pour communiquer les teintes de manière numérique.

Préparer la synchronisation d'annuaires

Les Services Web. Jean-Pierre BORG EFORT

Cahier Technique. «Développer une application intranet pour la gestion des stages des étudiants» Antonin AILLET. Remi DEVES

Processus 2D-Doc. Version : 1.1 Date : 16/11/2012 Pôle Convergence AGENCE NATIONALE DES TITRES SECURISÉS. Processus 2D-Doc.

Gestion des utilisateurs et de leurs droits

I4 : Bases de Données

1. Qu'est-ce que SQL? La maintenance des bases de données Les manipulations des bases de données... 5

LES TYPES DE DONNÉES DU LANGAGE PASCAL

Lancement de la simulation SIMBA

Chapitre 2 Devine mon nombre!

Tutoriel: Création d'un Web service en C++ avec WebContentC++Framework

Structure d un programme et Compilation Notions de classe et d objet Syntaxe

Mettre en place un formulaire dans le site avec le module webform

XMLInvoice Standard de facturation dans le domaine de la santé publique suisse

Plateforme PAYZEN. Définition de Web-services

Import XML HAL et HAL- Inria

Tutoriel d installation de Hibernate avec Eclipse

Module Com231A - Web et Bases de Données Notion 5 : Formulaires et utilisation des Bases de Données avec PHP

La gestion des protocoles HTTP, FTP, SOAP, etc.

Chapitre 10. Les interfaces Comparable et Comparator 1

Créer une base de données

CRÉER UNE BASE DE DONNÉES AVEC OPEN OFFICE BASE

Création et Gestion des tables

Note méthodologique Base de données

Manuel d intégration API SOAP SMS ALLMYSMS.COM

Compte-rendu de projet de Système de gestion de base de données

Application de lecture de carte SESAM-Vitale Jeebop

Conception des bases de données : Modèle Entité-Association

Le stockage local de données en HTML5

Premiers Pas en Programmation Objet : les Classes et les Objets

OPTENET DCAgent Manuel d'utilisateur

Services web & E-Commerce. David DABOUÉ - daboueda@iro.umontreal.ca Mars 2006

Modélisation Conceptuelle. Partie 2: Le modèle Entité-Association

PROSOP : un système de gestion de bases de données prosopographiques

Intégration de l interface graphique de Ptidej dans Eclipse

Généralités sur le Langage Java et éléments syntaxiques.

Initiation à html et à la création d'un site web

Langage SQL : créer et interroger une base

Info0101 Intro. à l'algorithmique et à la programmation. Cours 3. Le langage Java

Travaux pratiques avec RapidMiner

CONSERVATOIRE NATIONAL DES ARTS ET METIERS. Centre Régional Associé de Nantes. Mémoire présenté en vue d obtenir l examen probatoire en informatique

Programmer en JAVA. par Tama

EDESS. 1 Démarche générale principes 2

Consolidation d un modèle conceptuel de données de Master Data Management

T. BLOTIN Lycée Paul-Eluard SAINT-DENIS

Le langage SQL pour Oracle - partie 1 : SQL comme LDD

CREATION WEB DYNAMIQUE

Le Langage De Description De Données(LDD)

Héritage presque multiple en Java (1/2)

Introduction à Java. Matthieu Herrb CNRS-LAAS. Mars

Guide d'utilisation. OpenOffice Calc. AUTEUR INITIAL : VINCENT MEUNIER Publié sous licence Creative Commons

Transcription:

2 ème partie: XML SCHEMA Les types de données Description des éléments, les compositeurs Déclaration d'attributs Déclaration d'un élément sans sous éléments Création d'un type complexe à partir d'un type simple Création d'élément à contenu mixte Déclaration et référencement Les dérivations Restrictions du type Les types personnalisés, les facettes Prof. M.D.RAHMANI Technologies XML Master IT 2013-2014 1

Les types de données Types simples: Les types de données simples ne peuvent comporter ni attributs, ni sous-éléments. Il existe de nombreux prédéfinis, mais il est également possible d'en "dériver" de nouveaux. Prof. M.D.RAHMANI Technologies XML Master IT 2013-2014 2

Types prédéfinis des éléments - L attribut type indique le type de l élément. - Série de types prédéfinis: string, boolean, float, decimal, integer, nonpositiveinteger, negativeinteger, nonnegativeinteger, positiveinteger, timeduration, timeinstant, time, timeperiod, date, month, year, century, urireference, ID, IDREF, ENTITY, NOTATION,. - La cardinalité des éléments: minoccurs, maxoccurs. maxoccurs="unbounded" : la valeur maximale n a pas de limite. Ces deux attributs ont une valeur égale à 1 par défaut. Prof. M.D.RAHMANI Technologies XML Master IT 2013-2014 3

Types simples prédéfinis Type simple exemples string Un bienfait n'est jamais perdu normalizedstring Un bienfait n'est jamais perdu token Un bienfait n'est jamais perdu byte 1, 126 unsignedbyte 0, 126 base64binary GpM7 hexbinary 0FB7 positiveinteger 1, 126789 negativeinteger -126789, -1 nonnegativeinteger 0, 1, 126789 nonpositiveinteger -126789, -1, 0 int 1, 126789675 integer -126789, -1, 0, 1, 126789 Prof. M.D.RAHMANI Technologies XML Master IT 2013-2014 4

Déclarations d'attributs Les attributs des éléments doivent être déclarés à l intérieur de la balise xsd:element, après les sous-éléments. La définition d attributs se fait par l élément xsd:attribute exemple: <xsd: attribute name="genre" type="xsd:string" use="optional" /> <xsd: attribute name="isbn" type="xsd:string" use="required" /> Prof. M.D.RAHMANI Technologies XML Master IT 2013-2014 5

Déclarations d'attributs L attribut use peut prendre les valeurs suivantes: - optional: facultatif - required: l'attribut doit apparaître - fixed: l'attribut ne peut prendre qu'une seule valeur - default: l'attribut peut ne pas être défini, auquel cas il prendra une valeur par défaut. Prof. M.D.RAHMANI Technologies XML Master IT 2013-2014 6

Déclarations d'attributs Exemple: <xsd:attribute name="maj" type="xsd:date" use="optional" default="2009-10-21" /> L'attribut maj est optionnel, avec une valeur par défaut au 21 octobre 2009 s'il n'apparaît pas. Le format de date est standardisé : cette date s'écrit donc à l'anglo-saxonne année-mois-jour. Prof. M.D.RAHMANI Technologies XML Master IT 2013-2014 7

Déclaration d'un élément sans sous-éléments Déclaration d'un élément ne contenant que du texte avec un ou plusieurs attributs : Un tel élément est de type complexe, car il contient au moins un attribut. Afin de spécifier qu'il peut contenir également du texte, on utilise l'attribut mixed de l'élément xsd;complextype. Par défaut, mixed="false"; il faut dans ce cas forcer mixed="true". Par exemple, <xsd:element name="elt"> <xsd:complextype mixed="true"> <xsd:attribute name="attr" type="xsd:string" use="optional" /> </xsd:complextype> </xsd:element> Prof. M.D.RAHMANI Technologies XML Master IT 2013-2014 8

Création d'un type complexe à partir de types simples Soit un élément contenant une valeur de type simple, et possédant un attribut, comme: <poids unite="kg">67</poids> Un tel élément ne peut pas être déclaré de type simple, car il contient un attribut. On va dériver par extension un type complexe typepoids à partir du type simple positiveinteger Prof. M.D.RAHMANI Technologies XML Master IT 2013-2014 9

Création d'un type complexe à partir de types simples Le Schéma XML: <xsd:complextype name="typepoids"> <xsd:simplecontent> <xsd:extension base="xsd:positiveinteger"> <xsd:attribute name="unite" type="xsd:string" /> </xsd:extension> </xsd:simplecontent> </xsd:complextype> L'élément xsd:simplecontent indique que le nouvel élément ne contient pas de sous-éléments. Prof. M.D.RAHMANI Technologies XML Master IT 2013-2014 10

Création d'éléments à contenu mixte Les éléments contenant du texte et/ou des sous éléments sont déclarées par l'attribut mixed placé dans l'élément complextype: <xsd:element: name="chanteur"> <xsd:complextype mixed="true"> <xsd:all> <xsd:element name="nom" type="xsd:string"/> <xsd:element name="prenom" type="xsd:string"/> <xsd:all> <xsd:attribute name="ne" type="xsd:string" /> <xsd:attribute name="mort" type="xsd:string" use="optional" /> </xsd:complextype> </xsd:element> Prof. M.D.RAHMANI Technologies XML Master IT 2013-2014 11

Création d'éléments à contenu mixte La valeur true affectée à l'attribut mixed indique que du texte est accepté n'importe où entre les sous-éléments Nom et Prenom. Cette notation peut accepter: <Chanteur Ne="27/11/1942" Mort="18/9/1970">Le chanteur compositeur <Nom> HENDRIX</Nom> <Prenom>Jimi</Prenom> était une grande star </Chanteur> Prof. M.D.RAHMANI Technologies XML Master IT 2013-2014 12

Déclaration et référencement Il est recommandé de commencer par déclarer: 1- les éléments et attributs de type simple, 2- puis ceux de type complexe. On peut faire référence dans une déclaration de type complexe à un élément de type simple préalablement défini. Prof. M.D.RAHMANI Technologies XML Master IT 2013-2014 13

Déclaration et référencement par exemple: <xsd:element name="livre"> <xsd:complextype> <xsd:sequence> <xsd:element name="auteur" type="xsd:string" /> <xsd:element name="pages" type="xsd:positiveinteger" /> </xsd:sequence> </xsd:complextype> </xsd:element> peut s'écrire: <xsd:element name="auteur" type="xsd:string" /> <xsd:element name="pages" type="xsd:positiveinteger " /> <xsd:element name="livre"> <xsd:complextype> <xsd:sequence> <xsd:element ref="auteur" /> <xsd:element ref="pages" /> </xsd:sequence> </xsd:complextype> </xsd:element> Prof. M.D.RAHMANI Technologies XML Master IT 2013-2014 14

Les dérivations Les types simples et complexes permettent déjà de faire plus de choses que les déclarations dans le langage DTD. Il est possible de raffiner leur déclaration de telle manière qu'ils soient une "restriction" ou une "extension" d'un type déjà existant, en vue de préciser un peu plus leur forme. Prof. M.D.RAHMANI Technologies XML Master IT 2013-2014 15

La dérivation par restriction du type La dérivation par restriction permet de créer de nouveaux types simples en imposant des contraintes à des types simples prédéfinis de XML Schema. Pour cela, on utilise des facettes, qui sont des contraintes appliquées à un type simple particulier. Une facette permet de placer une contrainte sur l'ensemble des valeurs que peut prendre un type de base. Prof. M.D.RAHMANI Technologies XML Master IT 2013-2014 16

Restriction de type (facettes) Par exemple, on peut créer un type simple, appelé monentier, limité aux valeurs comprises entre 0 et 99 inclus. On dérive ce type par restriction à partir du type simple prédéfini nonnegativeinteger, en utilisant la facette: maxexclusive. Exemple: <xsd:simpletype name="monentier"> <xsd:restriction base="nonnegativeinteger"> <xsd:maxexclusive value="100" /> </xsd:restriction> </xsd:simpletype> Prof. M.D.RAHMANI Technologies XML Master IT 2013-2014 17

Les Facettes Il existe un nombre important de facettes qui permettent de : énumérer toutes les valeurs possibles d'un type, fixer la valeur minimale ou maximale d'un type, prendre en compte des expressions régulières, fixer, restreindre ou augmenter la longueur minimale ou maximale d'un type simple, fixer la précision du type... Prof. M.D.RAHMANI Technologies XML Master IT 2013-2014 18

Les types personnalisés Les types de données personnalisés se définissent à partir des types prédéfinis en spécifiant certaines caractéristiques et en posant des contraintes sur le type de base. Le type prédéfini string a six caractéristiques ou facettes modifiables : enumeration : énumération de valeurs possibles. length : longueur de la chaîne. minlength : longueur minimale. maxlength : longueur maximale. pattern : permet de préciser des caractéristiques grâce à des expressions régulières. whitespace : permet la gestion des espaces. Prof. M.D.RAHMANI Technologies XML Master IT 2013-2014 19

Restriction de type (facettes) Exemple 1: Enumérer les valeurs possibles (enumeration) <xsd:attribute name="jour" type="typejoursemaine" use="required" /> <xsd:simpletype name="typejoursemaine"> <xsd:restriction base="xsd:string"> <xsd:enumeration value="lundi" /> <xsd:enumeration value="mardi" /> <xsd:enumeration value="mercredi" /> <xsd:enumeration value="jeudi" /> <xsd:enumeration value="vendredi" /> <xsd:enumeration value="samedi" /> <xsd:enumeration value="dimanche" /> </xsd:restriction> </xsd:simpletype> Prof. M.D.RAHMANI Technologies XML Master IT 2013-2014 20

Restriction de type (facettes) Exemple 2: limiter la longueur d'une chaîne <xsd:simpletype name="typemotlanguefrancaise"> <xsd:restriction base="xsd:string"> <xsd:maxlength value="20" /> </xsd:restriction> </xsd:simpletype> Prof. M.D.RAHMANI Technologies XML Master IT 2013-2014 21

Restriction de type (facettes) Exemple 3: utilisation des expressions régulières On peut utiliser des expressions régulières, qui permettent de spécifier quels sont les caractères autorisés, à l'aide de l'élément xsd:pattern <xsd:simpletype name="typeadresseelectronique"> <xsd:restriction base="xsd:string"> <xsd:pattern value="(.)+@(.)+" /> </xsd:restriction> </xsd:simpletype> Dans cet exemple, (.)+ signifie que l'on peut mettre n'importe quel caractère au moins une fois, et qu'entre les deux chaînes doit apparaître le caractère @. Prof. M.D.RAHMANI Technologies XML Master IT 2013-2014 22

Restriction de type (facettes) Exemple 4: réduction du nombre de chiffres Un numéro ISBN est un référent international pour une publication. Il s'agit d'un numéro à 10 ou 13 chiffres. On peut le déclarer ainsi : <xsd:simpletype name="typeisbn"> <xsd:restriction base="xsd:string"> <xsd:pattern value="[0-9]{10}" /> </xsd:restriction> </xsd:simpletype> Prof. M.D.RAHMANI Technologies XML Master IT 2013-2014 23

Exemples (utilisation des facettes) Exemple 5: <xsd:simpletype name="rvb"> <xsd:restriction base="xsd:string"> <xsd:enumeration value="bleu"/> <xsd:enumeration value="rouge"/> <xsd:enumeration value="vert"/> </xsd:restriction> </xsd:simpletype > <xsd:simpletype name="temperature"> <xsd:restriction base="xsd:integer"> <xsd:mininclusive value="-40"/> <xsd:maxinclusive value="50"/> </xsd:restriction> </xsd:simpletype> Prof. M.D.RAHMANI Technologies XML Master IT 2013-2014 24

Exemples (utilisation des facettes) Les types définis par l'utilisateur peuvent à leur tour servir à créer de nouveaux types. Une caractéristique d'un type peut être fixée, elle est considérée comme une constante et ne peut être modifiée par un nouveau type. Exemple 6: <xsd:simpletype name="temperaturemaroc"> <xsd:restriction base="temperature"> <xsd:mininclusive value="-15" fixed="true"/> <xsd:maxinclusive value="50"/> </xsd:restriction> </xsd:simpletype> Prof. M.D.RAHMANI Technologies XML Master IT 2013-2014 25

Exercice: XML Schéma Voici une DTD: éléments sans attributs <!ELEMENT Librairie (Livre)+> <!ELEMENT Livre (Titre, Auteur, Date, ISBN, Editeur)> <!ELEMENT Titre(#PCDATA)> <!ELEMENT Auteur(#PCDATA)> <!ELEMENT Date(#PCDATA)> <!ELEMENT ISBN(#PCDATA)> <!ELEMENT Editeur(#PCDATA)> 1- Donner un exemple de document valide. 2- Donner le document XML Schema équivalent en appliquant la notion de référence à un type. Prof. M.D.RAHMANI Technologies XML Master IT 2013-2014 26

Correction: Exemple de document XML valide <?xml version="1.0"?> <Librairie xmlns="http://www.fsr.ac.ma" xmlns:xsi="http://www.w3.org/2001/xmlschema-instance" xsi:schemalocation="http://www.fsr.ac.ma librairie.xsd"> <Livre> </Livre> </Librairie> <Titre>Le guide du routard Galactique</Titre> <Auteur>Douglas Adams</Auteur> <Date>1979</Date> <ISBN>0345391802</ISBN> <Editeur>Ballantine Books</Editeur> Prof. M.D.RAHMANI Technologies XML Master IT 2013-2014 27

1: Le schéma XML correspondant <?xml version="1.0"> <xsd:schema xmlns:xsd="http://www.w3.org/2001/xmlschema"> <xsd:element name="librairie"> <xsd:complextype> <xsd:sequence> <xsd:element ref="livre" minoccurs="1" maxoccurs="unbounded"/> </xsd:sequence> </xsd:complextype> </xsd:element> <xsd:element name="livre"> <xsd:complextype> <xsd:sequence> <xsd:element ref="titre"/> <xsd:element ref="auteur"/> <xsd:element ref="date" /> <xsd:element ref="isbn" /> <xsd:element ref="editeur"/> </xsd:sequence> </xsd:complextype> </xsd:element> <xsd:element name="titre" type="xsd:string"/> <xsd:element name="auteur" type="xsd:string"/> <xsd:element name="date" type="xsd:string"/> <xsd:element name="isbn" type="xsd:string"/> <xsd:element name="editeur" type="xsd:string"/> </xsd:schema> Prof. M.D.RAHMANI Technologies XML Master IT 2013-2014 28

2: Le schéma XML correspondant Version équivalente à la première, mais plus compacte. <xsd:element name="librairie"> <xsd:complextype> <xsd:sequence> <xsd:element name="livre" maxoccurs="unbounded"> <xsd:complextype> <xsd:sequence> <xsd:element name="titre" type="xsd:string"/> <xsd:element name="auteur" type="xsd:string"/> <xsd:element name="date" type="xsd:string"/> <xsd:element name="isbn" type="xsd:string"/> <xsd:element name="editeur" type="xsd:string"/> </xsd:sequence> </xsd:complextype> </xsd:element> </xsd:sequence> </xsd:complextype> </xsd:element> Prof. M.D.RAHMANI Technologies XML Master IT 2013-2014 29

3: Le schéma XML correspondant Version équivalente avec des types personnalisés : <xsd:element name="librairie"> <xsd:complextype> <xsd:sequence> <xsd:element name="livre" type="typelivre" maxoccurs="unbounded" /> </xsd:sequence> </xsd:complextype> </xsd:element> <xsd:complextype name="typelivre"> <xsd:sequence> <xsd:element name="titre" type="xsd:string"/> <xsd:element name="auteur" type="xsd:string"/> <xsd:element name="date" type="xsd:string"/> <xsd:element name="isbn" type="xsd:string"/> <xsd:element name="editeur" type="xsd:string"/> </xsd:sequence> </xsd:complextype> Prof. M.D.RAHMANI Technologies XML Master IT 2013-2014 30

L'utilisation d'une expression régulière Le type string utilisé pour le numéro ISBN et la date ne sont pas précis. - La date est de la forme "2002", nous pouvons utiliser le type prédéfini correspondant : gyear. - Le numéro ISBN est de la forme : d-ddddd-ddd-d ou d-ddd-ddddd-d ou d-dd-dddddd-d, où 'd' est un chiffre. Le type sera de la forme : <xsd:simpletype name="typeisbn"> <xsd:restriction base="xsd:string"> <xsd:pattern value="\d{1}-\d{5}-\d{3}-\d{1}"/> <xsd:pattern value="\d{1}-\d{3}-\d{5}-\d{1}"/> <xsd:pattern value="\d{1}-\d{2}-\d{6}-\d{1}"/> </xsd:restriction> </xsd:simpletype> Prof. M.D.RAHMANI Technologies XML Master IT 2013-2014 31

Exercice 2: XML Schéma Voici une DTD: éléments avec attributs <!-- Voici une DTD (Définition de Type de Document) ou grammaire --> <!ELEMENT Bibliotheque (Livre)*> <!ELEMENT Livre (Titre,Auteur,Editeur)> <!ATTLIST Livre Genre CDATA #REQUIRED> <!ATTLIST Livre ISBN CDATA #IMPLIED> <!ELEMENT Titre (#PCDATA)> <!ELEMENT Auteur (Prenom, Nom)> <!ELEMENT Editeur (Nom, Annee)> <!ELEMENT Prenom (#PCDATA)> <!ELEMENT Nom (#PCDATA)> <!ELEMENT Annee (#PCDATA)> Donner un Schéma XML correspondant Prof. M.D.RAHMANI Technologies XML Master IT 2013-2014 32

Exercice 2: Schéma XML <?xml version="1.0"?> <xsd:schema xmlns:xsd="http://www.w3.org/2001/xmlschema"> <xsd:element name="bibliotheque"> <xsd:complextype> <xsd:sequence> <xsd:element name="livre" minoccurs="0" maxoccurs="unbounded"> <xsd:complextype> <xsd:sequence> <xsd:element name="titre" type="xsd:string" /> <xsd:element name="auteur"> <xsd:complextype> <xsd:sequence> <xsd:element name="nom" type="xsd:string"/> <xsd:element name="prenom" type="xsd:string" minoccurs="0" /> </xsd:sequence> </xsd:complextype> </xsd:element> <xsd:element name="editeur" > <xsd:complextype> <xsd:sequence> <xsd:element name="nom" type="xsd:string" /> <xsd:element name="annee" type="xsd:string" /> </xsd:sequence> </xsd:complextype> </xsd:element> </xsd:sequence> <xsd:attribute name="genre" type="xsd:string" use="required" /> <xsd:attribute name="isbn" type="xsd:string" use="optional" /> </xsd:complextype> </xsd:element> </xsd:sequence> </xsd:complextype> </xsd:element> </xsd:schema> Prof. M.D.RAHMANI Technologies XML Master IT 2013-2014 33

Utilisation des listes (1) Il est possible avec les XML Schema de décrire des listes d'éléments.: Prenons l'exemple XML du loto : <loto> <boule rang="1 ">19</boule> <boule rang="2 ">42</boule> <boule rang="3 ">24</boule> <boule rang="4 ">10</boule> <boule rang="5 ">6</boule> <boule rang="6 ">35</boule> </loto> peut aussi s'écrire : <loto>19 42 24 1 0 6 35</loto> Ce qui se définit en XML Schema par : <xsd:simpletype name="loto"> <xsd:list itemtype="xsd:positiveinteger"/> </xsd:simpletype> Prof. M.D.RAHMANI Technologies XML Master IT 2013-2014 34

Utilisation des listes (2) Pour être plus précis, on va restreindre les nombres de 1 et 49 et limiter la liste à 6 éléments : <xsd:simpletype name="chiffreloto"> <xsd:restriction base="xsd:positiveinteger"> <xsd:maxinclusive value="49"/> </xsd:restriction> </xsd:simpletype> <xsd:simpletype name="listeloto"> <xsd:list itemtype="chiffreloto"/> </xsd:simpletype > <xsd:simpletype name="loto"> <xsd:restriction base="listeloto"> <xsd:length value="6"/> </xsd:restriction> </xsd:simpletype> Prof. M.D.RAHMANI Technologies XML Master IT 2013-2014 35

Union de types simples Le mot clé union permet de faire l'union entre des types simples: <xsd:simpletype name="chiffreloto"> <xsd:restriction base="xsd:positiveinteger"> <xsd:maxinclusive value="49"/> </xsd:restriction> </xsd:simpletype> <xsd:simpletype name="typeloto"> <xsd:restriction base="xsd:string"> <xsd:enumeration value="premier tirage"/> <xsd:enumeration value="deuxieme tirage"/> </xsd:restriction> </xsd:simpletype> <xsd:simpletype name="loto"> <xsd:union membertypes="chiffreloto typeloto"/> </xsd:simpletype> Prof. M.D.RAHMANI Technologies XML Master IT 2013-2014 36

Formes de dérivation d'un type complexe Deux formes de dérivation pour un type complexe : par restriction : on restreint un type existant sur le nombre d'occurrences ; l'intervalle de valeurs possibles. par extension : ajout d'éléments à un type complexe. Prof. M.D.RAHMANI Technologies XML Master IT 2013-2014 37

Exemple d'extension <xsd:element name="librairie"> <xsd:complextype> <xsd:sequence> <xsd:element name="livre" type="typelivreedite" maxoccurs="unbounded" /> </xsd:sequence> </xsd:complextype> </xsd:element> <xsd:complextype name="typelivre"> <xsd:sequence> <xsd:element name="titre" type="xsd:string"/> <xsd:element name="auteur" type="xsd:string"/> <xsd:element name="date" type="xsd:string"/> </xsd:sequence> </xsd:complextype> <xsd:complextype name="typelivreedite"> <xsd:complexcontent> <xsd:extension base="typelivre"> <xsd:sequence> <xsd:element name="isbn" type="xsd:string"/> <xsd:element name="editeur" type="xsd:string"/> </xsd:sequence> <xsd:extension> </xsd:complexcontent> </xsd:complextype> 38 Prof. M.D.RAHMANI Technologies XML Master IT 2013-2014

Exemple de restriction <xsd:element name="librairie"> <xsd:complex Type> <xsd:sequence> <xsd:element name="livre" type="typelivreedite" maxoccurs="unbounded" /> </xsd:sequence> </xsd:complextype> </xsd:element> <xsd:complextype name="petitelibrairie"> <xsd:complexcontent> <xsd:restriction base="librairie"> <xsd:sequence> <xsd:element name="livre" type="typelivreedite" maxoccurs="1000" /> </xsd:sequence> <xsd:restriction> </xsd:complexcontent> </xsd:complextype> Prof. M.D.RAHMANI Technologies XML Master IT 2013-2014 39

Exemple des dérivations Les dérivations sont réglementées, il est possible de les restreindre, voire même de les empêcher: - Dérivation impossible : <xsd:complextype name="publication" final="#all"> - Restriction impossible, Extension permise : <xsd:complextype name="publication" final="restriction"> - Extension impossible, Restriction permise : <xsd:complextype name="publication" final="extension"> Prof. M.D.RAHMANI Technologies XML Master IT 2013-2014 40

Commenter un Schéma XML Les commentaires sont insérés grâce à l'élément annotation. <documentation> permet de mettre des commentaires pour un humain. <appinfo> met du commentaire pour une machine. Le contenu doit être un document XML bien formé. Exemple: <xsd:annotation> <xsd:documentation> texte pour les humains. </xsd:documentation> <xsd:appinfo > <assert test="a > B">A est supérieur ou B</assert> </xsd:appinfo> </xsd:annotation> Prof. M.D.RAHMANI Technologies XML Master IT 2013-2014 41