XML Schema xml-schema XML © Daniel. K. Schneider, Webster University Geneva - T

XML Schema xml-schema XML © Daniel. K. Schneider, Webster University Geneva - TECFA, University of Geneva 29/10/09 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 XML © Daniel. K. Schneider, Webster University Geneva - TECFA, University of Geneva 29/10/09 • 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 xml-schema-1-3 XML © Daniel. K. Schneider, Webster University Geneva - TECFA, University of Geneva 29/10/09 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. Table des matières détaillée xml-schema-1-4 XML © Daniel. K. Schneider, Webster University Geneva - TECFA, University of Geneva 29/10/09 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 xml-schema-1-5 XML © Daniel. K. Schneider, Webster University Geneva - TECFA, University of Geneva 29/10/09 2. Introduction 2.1 Types de grammaires XML (Schema languages) • 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. Schema Languages (définir des types de contenus) basé sur une grammaire basé sur des assertions DTD XML Schema (XSD) Relax NG Schematron (ISO standard 2006) (part of W3C XML standard) (W3C standard (ISO standard 2003) 2001/2004) XML Schema - 2. Introduction xml-schema-1-6 XML © Daniel. K. Schneider, Webster University Geneva - TECFA, University of Geneva 29/10/09 2.2 Comparaison de schémas basés sur une grammaire Caractéristiques DTD XML Schema (XSD) Relax NG Adoption large Applications data-centric R&D, mais aussi qq. standards Complexité structurale moyenne puissant (e.g. sets, element occurrence constraints) puissant Types de données peu (10, surtout des valeurs d’attributs) puissant (44 + plus types dérivables) puissant Complexité globale basse élevée moyenne Formalisme en XML non oui oui (notation courte aussi) Association avec un document XML DOCTYPE declaration Namespace declaration 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 xml-schema-1-7 XML © Daniel. K. Schneider, Webster University Geneva - TECFA, University of Geneva 29/10/09 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] 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 xml-schema-1-8 XML © Daniel. K. Schneider, Webster University Geneva - TECFA, University of Geneva 29/10/09 3. XSD - structure du fichier et espaces de nom 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). <?xml version="1.0" encoding="UTF-8"?> <xsd:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" ..... "> <xsd:element ...> </xs:element> </xsd:schema> Déclaration XML XSD élément racine (root) espace de nommage XML Schema - 3. XSD - structure du fichier et espaces de nom xml-schema-1-9 XML © Daniel. K. Schneider, Webster University Geneva - TECFA, University of Geneva 29/10/09 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 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 xml-schema-1-10 XML © Daniel. K. Schneider, Webster University Geneva - TECFA, University of Geneva 29/10/09 B. Solution 2: Donner un namespace au code du schéma • 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 xml-schema-1-11 XML © Daniel. K. Schneider, Webster University Geneva - TECFA, University of Geneva 29/10/09 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 - 3. XSD - structure du fichier et espaces de nom xml-schema-1-12 XML © Daniel. K. Schneider, Webster University Geneva - TECFA, University of Geneva 29/10/09 B. Association d’un XSD avec XML, Solution 2 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 XML © Daniel. K. Schneider, Webster University Geneva - TECFA, University of Geneva 29/10/09 uploads/Litterature/ xml-schema.pdf

  • 69
  • 0
  • 0
Afficher les détails des licences
Licence et utilisation
Gratuit pour un usage personnel Attribution requise
Partager