XML Schema. Originaux. Auteurs et version. Prérequis. Abstract. Objectifs



Documents pareils
BD et XML : Exercices

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

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

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

Master d Informatique Corrigé du partiel novembre 2010

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

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

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

ech-0148 Motifs d annonce Entreprises - taxes de domaine

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

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

Outils logiciels pour l'ingénierie documentaire

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

Faculté Polytechnique de Mons. Le processus d Extraction, Transformation et Load (ETL) dans des entrepôts de données XML

Lancement de la simulation SIMBA

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

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

Learning Object Metadata

Web Application Models

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

Introduction aux «Services Web»

MISE EN PLACE DES PRÉLÈVEMENTS SEPA PAR LES REMETTANTS HORS CLIENTÈLE DFT

OCL - Object Constraint Language

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

Guide Utilisateur ACQUIT : Anomalies issues du Guichet XML

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

Présentation du langage et premières fonctions

Expression des contraintes. OCL : Object C o n t r a i n t L a n g u a g e

Introduction aux concepts d ez Publish

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

Application de lecture de carte SESAM-Vitale Jeebop

Tutoriel QSOS. Version /02/2013

LES TYPES DE DONNÉES DU LANGAGE PASCAL

Ingénierie Dirigée par les Modèles. Editeurs de modèles. (Eclipse Modeling Tools) Jean-Philippe Babau

LES TECHNOLOGIES DU WEB APPLIQUÉES AUX DONNÉES STRUCTURÉES

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

Développement Web - Object Relational Mapping and Hibernate

Shibboleth. David Verdin - JOSY "Authentification centralisée pour les applications web" - Paris - 4 février mai

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

Guide d installation de SugarCRM Open Source version 4.5.1

Comment Accéder à des Bases de Données MySQL avec Windows lorqu'elles sont sur un Serveur Linux

Initiation à la Programmation en Logique avec SISCtus Prolog

Intégration d'applications à "gros grain" Unité d'intégration : le "service" (interface + contrat)

Programmation des Applications Réparties. Parsers XML DOM et SAX

SII Stage d informatique pour l ingénieur

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

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

Exploration des technologies web pour créer une interaction entre Mahara et les plateformes professionnelles et sociales

Diagramme de classes

Création et Gestion des tables

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

XML : documents et outils

Programmation Web Avancée Introduction aux services Web

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

BIRT (Business Intelligence and Reporting Tools)

Titres de créances NégOciables Refonte Informatique et organisationnelle

Chapitre VI- La validation de la composition.

Création de Sous-Formulaires

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

Conception et construction d entrepôts en XML

PHP et mysql. Code: php_mysql. Olivier Clavel - Daniel K. Schneider - Patrick Jermann - Vivian Synteta Version: 0.9 (modifié le 13/3/01 par VS)

Cours d introduction à l informatique. Partie 2 : Comment écrire un algorithme? Qu est-ce qu une variable? Expressions et instructions

Plateforme PAYZEN. Définition de Web-services

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

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

SECTION 5 BANQUE DE PROJETS

DITA XML Olivier Carrère -

D origine destiné à la conception de blog, WordPress est devenu l outil incontournable dans la liste des systèmes de gestion de contenus..

Gestion de références bibliographiques

Bibliothèque numérique de l enssib

Quelques patterns pour la persistance des objets avec DAO DAO. Principe de base. Utilité des DTOs. Le modèle de conception DTO (Data Transfer Object)

Systèmes d'informations historique et mutations

Algorithmique et programmation : les bases (VBA) Corrigé

Les GPO 2012 server R2 (appliqués à Terminal Serveur Edition)

L architecture des services Web

IFT2255 : Génie logiciel

HMI target Visu / PLC HMI. Pour réaliser une interface homme machine avec PLC control

Autour du web. Une introduction technique Première partie : HTML. Georges-André SILBER Centre de recherche en informatique MINES ParisTech

RAPPORT AUDIT SEO. Élaboré à l'attention de : Monsieur Greber Élaboré par : Cédric Peinado

Acronymes et abréviations. Acronymes / Abbréviations. Signification

Intégrateur Web HTML5 CSS3

SUGARCRM Sugar Open Source Guide d Installation de French SugarCRM Open Source Version 4.2

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

AWS avancé. Surveiller votre utilisation d EC2

armasuisse Office fédéral de topographie swisstopo Cours geocat.ch 28 avril 2014

UML et les Bases de Données

Tutoriel d installation de Hibernate avec Eclipse

XML et DOM. Matériel de cours. mars 1999 version 0.3 dernière modification: 24/3/99

Sage 100 CRM - Guide de la Fusion Avancée Version 8. Mise à jour : 2015 version 8

Les services usuels de l Internet

Création d objet imbriqué sous PowerShell.

S y m M a i l i n g. S o l u t i o n d e - m a i l i n g. SymMailing est un outil professionnel de création et de gestion de campagnes d ing.

des Données et Référentiels sur l'eau Service d'administration Nationale

Utiliser Améliorer Prêcher. Introduction à LDAP

Olivier Mondet

SEMANTIQUE DES MODELES D'ECHANGE DE DONNEES

Plate-forme de tests des fichiers XML virements SEPA et prélèvements SEPA. Guide d'utilisation

WDpStats Procédure d installation

UNIVERSITÉ DU QUÉBEC EN OUTAOUAIS

Transcription:

XML Schema XML Schema xml-schema Code: xml-schema Originaux url: http://tecfa.unige.ch/guides/tie/html/xml-schema/xml-schema.html url: http://tecfa.unige.ch/guides/tie/pdf/files/xml-schema.pdf Auteurs et version Daniel K. Schneider Version: 0.5 (modifié le 29/10/09) Prérequis Module technique précédent: xml-tech Abstract Petite introduction à XML Schema Objectifs Edition de fichiers XML avec un schéma XSD Traduction de DTDs vers XSD avec un outil

XML Schema -. xml-schema-1-2 Modification de types de données dans un XSD Création de grammaires XSD simples (!) Ressources The W3C XML Schema primer: http://www.w3.org/tr/xmlschema-0/ Roger Costello s extensive XML Schema tutorial: http://www.xfront.com/ Exemples Vous retrouverez les fichiers exemple de ce texte ici: http://tecfa.unige.ch/guides/xml/examples/xsd-examples/

XML Schema - 1. Table des matières détaillée 1. Table des matières détaillée 1. Table des matières détaillée 3 2. Introduction 5 2.1 Types de grammaires XML (Schema languages) 5 2.2 Comparaison de schémas basés sur une grammaire 6 2.3 Ressources 7 3. XSD - structure du fichier et espaces de nom 8 3.1 Structure et espace de nom d un fichier XSD 8 A.Solution 1: Donner un namespace au code XSD 9 Example 3-1:XSD définition pour une simple recette de cuisine 9 B.Solution 2: Donner un namespace au code du schéma 10 Example 3-2:XSD définition pour une simple recette 10 3.2 Validation 11 A.Association d un XSD avec un fichier XML, Solution 1 11 B.Association d un XSD avec XML, Solution 2 12 Example 3-3:XML pour une recette avec une XSD associée (file recipe.xml) 12 Example 3-4:IMS Content Packaging 1.1.4 et IMS/LOM Metadata 14 3.3 Définition d éléments 16 4. Types de données 18 4.1 Types simples 18 4.2 Types simples définis par l utilisateur 20 Example 4-1:Exemple "list": 20 Example 4-2:"restriction" sur un mot à choisir 20 Example 4-3:Restriction sur un nombre 21 5. Organisation d éléments 22 5.1 Références vs. insertion directe 22 5.2 Séquences 23 Example 5-1:Une liste d enfants ordonnées 23 Example 5-2:Une liste avec un ou plusieurs éléments 23 Example 5-3:Une liste avec un élément email à option et répétable 24 5.3 Choix 25 xml-schema-1-3

XML Schema - 1. Table des matières détaillée xml-schema-1-4 Example 5-4:Choix d éléments à option et répétable 25 Example 5-5:Choix obligatoire entre éléments 25 5.4 Mixed contents 26 5.5 Empty elements (éléments vides) 26 6. Attributs 27 Example 6-1:Groupes d attributs (file family.xsd) 28 6.1 Contraintes sur les valeurs 30 Example 6-2:Contraintes sur l age 30 7. Traduire des DTDs vers XSD 31 7.1 Définition d éléments 31 7.2 Définition d attributs 33 7.3 Exemples 34

XML Schema - 2. Introduction 2. Introduction xml-schema-1-5 2.1 Types de grammaires XML (Schema languages) Schema Languages (définir des types de contenus) basé sur une grammaire basé sur des assertions DTD (part of W3C XML standard) XML Schema (XSD) (W3C standard 2001/2004) Relax NG (ISO standard 2003) Schematron (ISO standard 2006) Basé sur un grammaire: Eléments autorisés dans un document XML, leur ordre, occurrences, etc... Contenu et type de données pour chaque élément et attribut. Basé sur des assertions: Assertions sur la nature des relations entre éléments and attributs dans un document XML.

XML Schema - 2. Introduction 2.2 Comparaison de schémas basés sur une grammaire xml-schema-1-6 Caractéristiques DTD XML Schema (XSD) Relax NG Adoption large Applications data-centric Complexité structurale Types de données moyenne peu (10, surtout des valeurs d attributs) puissant (e.g. sets, element occurrence constraints) puissant (44 + plus types dérivables) R&D, mais aussi qq. standards puissant puissant Complexité globale basse élevée moyenne Formalisme en XML non Association avec un document XML DOCTYPE declaration oui Namespace declaration oui (notation courte aussi) Pas de solution standard Support navigateur IE (Firefox non) non non File suffix *.dtd *.xsd *.rng / *.rnc Entités oui non ( xinclude) non

XML Schema - 2. Introduction 2.3 Ressources XML Schema (aussi appelé XSD pour "XML Schema Definition") est difficile Une bonne façon d apprendre XSD est de traduire une DTD avec un outil Voir 7. Traduire des DTDs vers XSD [31] xml-schema-1-7 W3C websites: url: http://www.w3.org/xml/schema (W3C Overview Page) url: http://www.w3.org/tr/xmlschema-0/ The W3C XML Schema primer Specifications: url: http://www.w3.org/tr/xmlschema-1/ XML Schema Part 1: Structures Second Edition 2004 url: http://www.w3.org/tr/xmlschema-2/ XML Schema Part 2: Datatypes Second Edition 2004 Outils: Exchanger XML Editor gère XML Schema Support pour l édition XML Validation d une fichier XSD Validation d un XML avec des XSD Traduction DTD/XSD/Relax NG

XML Schema - 3. XSD - structure du fichier et espaces de nom 3. XSD - structure du fichier et espaces de nom xml-schema-1-8 3.1 Structure et espace de nom d un fichier XSD Comme tout fichier XML, XSD doit commencer par une déclaration XML Racine d un XSD : <schema>... </schema> L élément schema possède des attributs (voir plus loin) XSD utilise des espaces de noms pour distinguer éléments appartenant à XSD (le langage) et les éléments et attributs définis par un schéma donné (même principe que XSLT). Déclaration XML espace de nommage <?xml version="1.0" encoding="utf-8"?> <xsd:schema xmlns:xs="http://www.w3.org/2001/xmlschema"... "> <xsd:element...> </xs:element> </xsd:schema> XSD élément racine (root)

XML Schema - 3. XSD - structure du fichier et espaces de nom Espaces de noms (namespaces) et préfixes On peut soit définir un préfixe pour les éléments XSD soit pour vos éléments Voir solution 1 et 2 ci-dessous Vous pouvez aussi choisir si vos éléments XML auront un namespace xml-schema-1-9 A. Solution 1: Donner un namespace au code XSD Souvent on utilise le préfixe xs: pour le code XSD Parfois xsd: cela n a pas d importance elementformdefault="qualified" veut dire que vos balises n auront pas de namespace Example 3-1: XSD définition pour une simple recette de cuisine <?xml version="1.0" encoding="utf-8"?> <!-- Simple recipe Schema --> <xs:schema xmlns:xs="http://www.w3.org/2001/xmlschema" elementformdefault="qualified"> <xs:element name="list"> <xs:complextype> <xs:sequence> <xs:element maxoccurs="unbounded" ref="recipe"/> </xs:sequence> </xs:complextype> </xs:element> Cette solution est préférable en règle générale (mais voir plus loin comment associer une XSD à un fichier XML: il faut encore ajouter des attributs)

XML Schema - 3. XSD - structure du fichier et espaces de nom B. Solution 2: Donner un namespace au code du schéma xml-schema-1-10 Les éléments définis pour votre schéma ont un préfixe dans la définition. vous devez donc définir votre namespace (substituer "yourdomain.org/namespace") On déclare que XML Schema a le namespace par défaut, c.a.d. les éléments XSD ne seront pas préfixés. Example 3-2: XSD définition pour une simple recette <schema xmlns='http://www.w3.org/2000/10/xmlschema' targetnamespace='http://yourdomain.org/namespace/' xmlns:t='http://yourdomain.org/namespace/'> <element name='t:list'> <complextype> <sequence> <element ref='t:recipe' maxoccurs='unbounded'/> </sequence> </complextype> </element>

XML Schema - 3. XSD - structure du fichier et espaces de nom 3.2 Validation Un document XML décrit par un XSD est appelé instance document. Dans XML Exchanger, clic sur l icone validation, ensuite sélectionner le fichier XSD A. Association d un XSD avec un fichier XML, Solution 1 Il faut déclarer le namespace xsi: (XMLSchema-instance) L attribut xsi:nonamespaceschemalocation définit l URL de votre XSD Attention: il faut utiliser cela tel quel!!! Je déconseille cette solution (voir la solution 2) XML file (http://tecfa.unige.ch/guides/xml/examples/xsd-examples/recipe-no-ns.xml ) <?xml version="1.0" encoding="iso-8859-1"?> <list xmlns:xsi="http://www.w3.org/2001/xmlschema-instance" xsi:nonamespaceschemalocation="recipe-no-ns.xsd"> <recipe>... </list> XSD file (http://tecfa.unige.ch/guides/xml/examples/xsd-examples/recipe-no-ns.xsd) <?xml version="1.0" encoding="utf-8"?> <xs:schema xmlns:xs="http://www.w3.org/2001/xmlschema" elementformdefault="qualified"> <xs:element name="list"> xml-schema-1-11

XML Schema - 3. XSD - structure du fichier et espaces de nom B. Association d un XSD avec XML, Solution 2 xml-schema-1-12 Solution à retenir: L idée est que chaque fragment XML fait tjrs partie d un namespace: 1. Les fichiers XML et XSD doivent inclure une namespace declaration pour un domaine Le fichier XML doit inclure en plus: 2. une déclaration pour le XMLSchema-instance namespace 3. un attribut xsi:schemalocation qui dit ou trouver XSD Cet attribut peut contenir plusieurs pairs "namespace-url" Example 3-3: XML pour une recette avec une XSD associée (file recipe.xml) XML file (http://tecfa.unige.ch/guides/xml/examples/xsd-examples/recipe.xml) <?xml version="1.0" encoding="iso-8859-1"?> <list xmlns="http://myrecipes.org/" xmlns:xsi="http://www.w3.org/2001/xmlschema-instance" xsi:schemalocation="http://myrecipes.org/ recipe.xsd" > <recipe> <meta>...</meta>... </recipe> </list> En gros: Il faut substituer qc. pour le rose et le rouge ci-dessus. Faites attention à la syntaxe de l attribut schemalocation: "Namespace_url XSD_URL NameSpace_URL XSD_URL..."

XML Schema - 3. XSD - structure du fichier et espaces de nom xml-schema-1-13 XSD file (http://tecfa.unige.ch/guides/xml/examples/xsd-examples/recipe.xsd) <?xml version="1.0" encoding="utf-8"?> <!-- Simple recipe Schema --> <xs:schema xmlns:xs="http://www.w3.org/2001/xmlschema" targetnamespace="http://myrecipes.org/" xmlns="http://myrecipes.org/" elementformdefault="qualified">... </xs:schema> La XSD définit un namespace pour vos balises. Il faut substituer http://myrecipes.org/" par un URL de votre choix, mais de préférence un URL sur lequel vous avez le contrôle (par exemple votre home page).

XML Schema - 3. XSD - structure du fichier et espaces de nom xml-schema-1-14 Example 3-4: IMS Content Packaging 1.1.4 et IMS/LOM Metadata url: C.f. http://tecfa.unige.ch/guides/tie/html/pedago-normes/pedago-normes.html Le fichier XML utilisera deux espaces de nommage <manifest xmlns="http://www.imsglobal.org/xsd/imscp_v1p1" xmlns:imsmd="http://www.imsglobal.org/xsd/imsmd_v1p2" xmlns:xsi="http://www.w3.org/2001/xmlschema-instance" identifier="manifest-1" xsi:schemalocation= "http://www.imsglobal.org/xsd/imscp_v1p imscp_v1p1.xsd http://www.imsglobal.org/xsd/imsmd_v1p2 imsmd_v1p2p2.xsd"> <metadata> <imsmd:lom>... </imsmd:lom> </metadata> <organizations default="learning_sequence_1">... Cet exemple montre comment utiliser deux espaces de nom pour deux XSD imscp_v1p1 est le namespace par défaut (sans préfixe) imsmd_v1p1 est le namespace pour les métadonnées.

XML Schema - 3. XSD - structure du fichier et espaces de nom Extrait du fichier ims_cp_rootv1p1.xsd xml-schema-1-15 <xsd:schema xmlns = "http://www.imsglobal.org/xsd/imscp_v1p1" targetnamespace = "http://www.imsglobal.org/xsd/imscp_v1p1" xmlns:xsi = "http://www.w3.org/2001/xmlschema-instance" xmlns:xsd = "http://www.w3.org/2001/xmlschema" version = "IMS CP 1.1.4" elementformdefault = "qualified">

XML Schema - 3. XSD - structure du fichier et espaces de nom 3.3 Définition d éléments Une structure XML est hiérarchique... xml-schema-1-16 <xs:element> Définit un élément Exemple d un simple élément sans enfant et sans attributs: <xs:element name="author" type="xs:string"/> Définition d éléments enfants On peut les définir de deux façons: soit avec un élément enfant complextype soit avec un attribut "type" qui se réfère à une définition complextype <xs:complextype> (1) enfant de xs:element <xs:element name="recipe"> <xs:complextype> <xs:sequence> <xs:element ref="meta"/> <xs:element minoccurs="0" ref="recipe_author"/> <xs:element ref="recipe_name"/> <xs:element ref="ingredients"/> <xs:element ref="directions"/> </xs:sequence> </xs:complextype> </xs:element>

XML Schema - 3. XSD - structure du fichier et espaces de nom xml-schema-1-17 <xs:complextype> (2) Alternativement, on déclare un complex type seul et ensuite on l utilise dans des déclarations d éléments. url: http://tecfa.unige.ch/guides/xml/examples/xsd-examples/recipe2.xsd Référence à un type CSD <xs:element name="recipe" type="recipe_contents" /> <xs:complextype name="recipe_contents"> <xs:sequence> <xs:element ref="meta"/> <xs:element minoccurs="0" ref="recipe_author"/> <xs:element ref="recipe_name"/> <xs:element ref="meal"/> <xs:element ref="ingredients"/> <xs:element ref="directions"/> </xs:sequence> </xs:complextype>

XML Schema - 4. Types de données 4. Types de données xml-schema-1-18 Définir ce que éléments ou attributs peuvent contenir. Ces types sont dans le même namespace que les balises XSD. 4.1 Types simples Exemples: Simple Type Exemples (séparés par des virgules) Explication string Confirm this is electric A text string base64binary GpM7 Base86 encoded binary data hexbinary 0FB7 HEX encoded binary data integer...-1, 0, 1,... positiveinteger 1, 2,... negativeinteger... -2, -1 nonnegativeinteger 0, 1, 2,... -9223372036854775808,... - long 1, 0, 1,... 9223372036854775807 decimal -1.23, 0, 123.4, 1000.00 -INF, -1E4, -0, 0, 12.78E-2, float 12, INF, NaN

XML Schema - 4. Types de données xml-schema-1-19 Simple Type boolean true, false, 1, 0 duration Exemples (séparés par des virgules) P1Y2M3DT10H30M12.3S datatime 1999-05-31T13:20:00.000-05:00 date 1999-05-31 Exemple d un élément: <xs:element name="author" type="xs:string"/> Explication 1 year, 2 months, 3 days, 10 hours, 30 minutes, and 12.3 seconds May 31st 1999 at 1.20pm Eastern Standard Time time 13:20:00.000, 13:20:00.000-05:00 gyear 1999 Name shipto XML 1.0 Name type QName po:usaddress XML Namespace QName anyuri http://www.example.com/ language en-gb, en-us, fr valid values for xml:lang as defined in XML 1.0 Exemple d un attribut (voir plus loin): <xsd:attributegroup name = "est_visible"> <xsd:attribute name = "est_visible" type = "xsd:boolean"/> </xsd:attributegroup>

XML Schema - 4. Types de données 4.2 Types simples définis par l utilisateur xml-schema-1-20 Example 4-1: Exemple "list": XSD: <xsd:element name="listofmyint" type="listofmyinttype"/> <xsd:simpletype name="listofmyinttype"> <xsd:list itemtype="xsd:integer"/> </xsd:simpletype> XML: <listofmyint>20003 15037 95977 95945</listOfMyInt> Example 4-2: "restriction" sur un mot à choisir XSD: <xsd:element name="theorie" type="liste_theories"/> <xsd:simpletype name="liste_theories"> <xsd:restriction base="xsd:string"> <xsd:enumeration value="constructivisme"/> <xsd:enumeration value="behavioriste"/> <xsd:enumeration value="cognitiviste"/> </xsd:restriction> </xsd:simpletype> XML: <theorie>constructivisme</theorie>

XML Schema - 4. Types de données xml-schema-1-21 Example 4-3: Restriction sur un nombre Le type est défini comme enfant ici. XSD: <xs:element name="age"> <xs:simpletype> <xs:restriction base="xs:integer"> <xs:mininclusive value="0"/> <xs:maxinclusive value="120"/> </xs:restriction> </xs:simpletype> </xs:element> XML: <age>100</age>

XML Schema - 5. Organisation d éléments 5. Organisation d éléments Ici on montre qqs. design patterns pour définir des contraintes structurelles... xml-schema-1-22 5.1 Références vs. insertion directe On conseille de définir tous les éléments à plat et ensuite y référer Eléments dans éléments (déconseillé) <xs:element name="meta"> <xs:complextype> <xs:sequence> <xs:element name="author" type="xs:string"/> <xs:element name="version" type="xs:string"/> <xs:element name="date" type="xs:string"/> </xs:sequence> </xs:complextype> </xs:element> Définition d éléments avec une référence (mieux) Voir Example 5-1: Une liste d enfants ordonnées [23] <xs:sequence> <xs:element ref="author"/>... </xs:sequence>

XML Schema - 5. Organisation d éléments 5.2 Séquences Les attributs minoccurs and maxoccurs définissent le nombre min/max. d un enfant. Example 5-1: Une liste d enfants ordonnées <xs:element name="meta"> <xs:complextype> <xs:sequence> <xs:element ref="author"/> <xs:element ref="date"/> <xs:element ref="version"/> </xs:sequence> </xs:complextype> <xs:element name="version" type="xs:string"/> <xs:element name="date" type="xs:string"/> <xs:element name="author" type="xs:string"/> Example 5-2: Une liste avec un ou plusieurs éléments <xs:element name="list"> <xs:complextype> <xs:sequence> <xs:element maxoccurs="unbounded" ref="recipe"/> </xs:sequence> </xs:complextype> </xs:element> xml-schema-1-23

XML Schema - 5. Organisation d éléments Example 5-3: Une liste avec un élément email à option et répétable <xs:element name="person"> <xs:complextype> <xs:sequence> <xs:element ref="name"/> <xs:element minoccurs="0" maxoccurs="unbounded" ref="email"/> <xs:element ref="link"/> </xs:sequence> <xs:attributegroup ref="attlist.person"/> </xs:complextype> </xs:element> xml-schema-1-24

XML Schema - 5. Organisation d éléments 5.3 Choix xml-schema-1-25 Example 5-4: Choix d éléments à option et répétable <xs:element name="infos"> <xs:complextype> <xs:choice minoccurs="0" maxoccurs="unbounded"> <xs:element ref="date"/> <xs:element ref="author"/> <xs:element ref="a"/> </xs:choice> </xs:complextype> </xs:element> Example 5-5: Choix obligatoire entre éléments <xs:element name="attempt"> <xs:complextype> <xs:choice> <xs:element ref="action"/> <xs:element ref="episode"/> </xs:choice> </xs:complextype> </xs:element>

XML Schema - 5. Organisation d éléments 5.4 Mixed contents <xs:element name="para"> <xs:complextype mixed="true"> <xs:sequence> <xs:element minoccurs="0" maxoccurs="unbounded" ref="strong"/> </xs:sequence> </xs:complextype> </xs:element> <xs:element name="strong" type="xs:string"/> 5.5 Empty elements (éléments vides) Définir un élément "vide" consiste à définir un élément sans enfants <xs:element name="author" type="xs:string"/> Cela s applique aussi aux "complex elements": Voir Example 6-1: Groupes d attributs (file family.xsd) [28] xml-schema-1-26

XML Schema - 6. Attributs 6. Attributs xml-schema-1-27 Les déclarations d attributs sont compliquées en XSD, c.a.d. on définit un complextype. Le paramètre use: optional, prohibited or required défaut est optional Voici quelques examples <xs:element name="name"> <xs:complextype> <xs:attribute name="lang" type="xs:string" use="required"/> </xs:complextype> </xs:element> Même chose, mais en plus long: <xs:element name="name"> <xs:complextype> <xs:simplecontent> <xs:extension base="xs:string"> <xs:attribute name="lang" type="xs:string" use="required"/> </xs:extension </xs:simplecontent> </xs:complextype> </xs:element>

XML Schema - 6. Attributs xml-schema-1-28 Groupes d attributs Utilisé pour déclarer des attributs plus complexes Les groupes sont réutilisables, c.a.d c est l équivalent entités paramétriques pour les DTD. Example 6-1: Groupes d attributs (file family.xsd) url: http://tecfa.unige.ch/guides/xml/examples/xsd-examples/family.xsd <xs:element name="person"> <xs:complextype> <xs:attributegroup ref="attlist.person"/> </xs:complextype> </xs:element> La définition ci-dessus se réfère au groupe d attributs défini ci-dessous: <xs:attributegroup name="attlist.person"> <xs:attribute name="name" use="required"/> <xs:attribute name="gender"> <xs:simpletype> <xs:restriction base="xs:token"> <xs:enumeration value="male"/> <xs:enumeration value="female"/> </xs:restriction> </xs:simpletype> </xs:attribute> <!-- cont. à la page suivante... -->

XML Schema - 6. Attributs xml-schema-1-29 <xs:attribute name="type" default="mother"> <xs:simpletype> <xs:restriction base="xs:token"> <xs:enumeration value="mother"/> <xs:enumeration value="father"/> <xs:enumeration value="boy"/> <xs:enumeration value="girl"/> </xs:restriction> </xs:simpletype> </xs:attribute> <xs:attribute name="id" use="required" type="xs:id"/> </xs:attributegroup> Voici un fragment xml valide: url: http://tecfa.unige.ch/guides/xml/examples/xsd-examples/family.xml <family> <person name="joe Miller" gender="male" type="father" id="i123456789"/> <person name="josette Miller" type="girl" id="i123456987"/> </family>

XML Schema - 6. Attributs 6.1 Contraintes sur les valeurs Voici un exemple xml-schema-1-30 Example 6-2: Contraintes sur l age <xs:element name="age"> <xs:simpletype> <xs:restriction base="xs:integer"> <xs:mininclusive value="18"/> <xs:maxinclusive value="120"/> </xs:restriction> </xs:simpletype> </xs:element>

XML Schema - 7. Traduire des DTDs vers XSD 7. Traduire des DTDs vers XSD xml-schema-1-31 Ci-dessous qqs. chablons de traduction La plupart des éditeurs ont un traducteur le résultat n est pas forcément très beau... dans Exchanger XML Editor: Menu Schema -> Convert Schema 7.1 Définition d éléments Exemples de http://www.w3.org/2000/04/schema_hack/ DTD <!ELEMENT ROOT (A,B) > <!ELEMENT ROOT (A B) > XML Schema <element name="root"> <complextype content="elementonly"> <element ref="t:a"> <element ref="t:b"> </complextype> <element> <element name="root"> <complextype content="elementonly"> <choice> <element ref="t:a"> <element ref="t:b"> </choice> </complextype> <element>

XML Schema - 7. Traduire des DTDs vers XSD xml-schema-1-32 DTD <!ELEMENT ROOT (A (B,C)) > <!ELEMENT ROOT (A?,B+,C*) > XML Schema <element name="root"> <complextype content="elementonly"> <choice> <element ref="t:a"> <sequence> <element ref="t:b"> <element ref="t:c"> </sequence> </choice> </complextype> <element> <element name="root"> <complextype content="elementonly"> <element ref="t:a" minoccurs="0"> <element ref="t:b" maxoccurs="unbounded"> <element ref="t:c" minoccurs="0" maxoccurs="unbounded"> </complextype> <element>

XML Schema - 7. Traduire des DTDs vers XSD 7.2 Définition d attributs xml-schema-1-33 DTD <!ATTLIST ROOT a CDATA #REQUIRED> <!ATTLIST ROOT a CDATA #IMPLIED> <!ATTLIST ROOT a (x y z)#required;> XML Schema <element name="root"> <complextype content="elementonly"> <attribute name="a" type="string" use="required"/> </complextype> </element> <element name="root"> <complextype content="elementonly"> <attribute name="a" type="string" use="optional"/> </complextype> </element> <element name="root"> <complextype content="elementonly"> <attribute name="a"> <simpletype base="string"> <enumeration value="x"/> <enumeration value="y"/> <enumeration value="z"/> </simpletype> </attribute> </complextype> </element>

XML Schema - 7. Traduire des DTDs vers XSD xml-schema-1-34 DTD <!ATTLIST ROOT a CDATA #FIXED "x"> XML Schema <element name="root"> <complextype content="elementonly"> <attribute name="a" type="string" use="fixed" value="x"/> </complextype> </element> 7.3 Exemples Voir: http://tecfa.unige.ch/guides/xml/examples/xsd-examples/