xml-schema.pdf

34
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

Upload: mourad-lm

Post on 20-Nov-2015

8 views

Category:

Documents


1 download

DESCRIPTION

xml shema

TRANSCRIPT

  • XML Schema xml-schemaXML Schema Code: xml-schema

    Originauxurl: 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)

    PrrequisModule technique prcdent: xml-tech

    Abstract Petite introduction XML Schema

    Objectifs Edition de fichiers XML avec un schma XSD Traduction de DTDs vers XSD avec un outilXML Daniel. K. Schneider, Webster University Geneva - TECFA, University of Geneva 29/10/09

    http://tecfa.unige.ch/guides/tie/html/xml-schema/xml-schema.htmlhttp://tecfa.unige.ch/guides/tie/pdf/files/xml-schema.pdfhttp://tecfa.unige.ch/tecfa-people/schneider.html../../html/xml-tech/xml-tech.html

  • XML Schema - . xml-schema-1-2 Modification de types de donnes dans un XSD Cration de grammaires XSD simples (!)

    Ressources The W3C XML Schema primer: http://www.w3.org/TR/xmlschema-0/ Roger Costellos 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 Daniel. K. Schneider, Webster University Geneva - TECFA, University of Geneva 29/10/09

    http://www.w3.org/TR/xmlschema-0/http://www.xfront.com/http://tecfa.unige.ch/guides/xml/examples/xsd-examples/

  • XML Schema - 1. Table des matires dtaille xml-schema-1-31. Table des matires dtaille1. Table des matires dtaille 32. Introduction 5

    2.1 Types de grammaires XML (Schema languages) 52.2 Comparaison de schmas bass sur une grammaire 62.3 Ressources 7

    3. XSD - structure du fichier et espaces de nom 83.1 Structure et espace de nom dun fichier XSD 8

    A.Solution 1: Donner un namespace au code XSD 9Example 3-1:XSD dfinition pour une simple recette de cuisine 9B.Solution 2: Donner un namespace au code du schma 10Example 3-2:XSD dfinition pour une simple recette 10

    3.2 Validation 11A.Association dun XSD avec un fichier XML, Solution 1 11B.Association dun XSD avec XML, Solution 2 12Example 3-3:XML pour une recette avec une XSD associe (file recipe.xml) 12Example 3-4:IMS Content Packaging 1.1.4 et IMS/LOM Metadata 14

    3.3 Dfinition dlments 164. Types de donnes 18

    4.1 Types simples 184.2 Types simples dfinis par lutilisateur 20

    Example 4-1:Exemple "list": 20Example 4-2:"restriction" sur un mot choisir 20Example 4-3:Restriction sur un nombre 21

    5. Organisation dlments 225.1 Rfrences vs. insertion directe 225.2 Squences 23

    Example 5-1:Une liste denfants ordonnes 23Example 5-2:Une liste avec un ou plusieurs lments 23Example 5-3:Une liste avec un lment email option et rptable 24

    5.3 Choix 25

    XML Daniel. K. Schneider, Webster University Geneva - TECFA, University of Geneva 29/10/09

  • XML Schema - 1. Table des matires dtaille xml-schema-1-4Example 5-4:Choix dlments option et rptable 25Example 5-5:Choix obligatoire entre lments 25

    5.4 Mixed contents 265.5 Empty elements (lments vides) 26

    6. Attributs 27Example 6-1:Groupes dattributs (file family.xsd) 28

    6.1 Contraintes sur les valeurs 30Example 6-2:Contraintes sur lage 30

    7. Traduire des DTDs vers XSD 317.1 Dfinition dlments 317.2 Dfinition dattributs 337.3 Exemples 34XML Daniel. K. Schneider, Webster University Geneva - TECFA, University of Geneva 29/10/09

  • XML Schema - 2. Introduction xml-schema-1-52. Introduction

    2.1 Types de grammaires XML (Schema languages)

    Bas sur un grammaire: Elments autoriss dans un document XML, leur ordre, occurrences, etc... Contenu et type de donnes pour chaque lment et attribut.

    Bas sur des assertions: Assertions sur la nature des relations entre lments and attributs dans un document XML.

    Schema Languages(dfinir des types de contenus)

    bas sur une grammaire bas sur des assertions

    DTD

    XML Schema (XSD)

    Relax NGSchematron(ISO standard 2006)

    (part of W3C XMLstandard)

    (W3C standard

    (ISO standard 2003)

    2001/2004)XML Daniel. K. Schneider, Webster University Geneva - TECFA, University of Geneva 29/10/09

  • XML Schema - 2. Introduction xml-schema-1-62.2 Comparaison de schmas bass sur une grammaire

    Caractristiques DTD XML Schema (XSD) Relax NG

    Adoption large Applications data-centric R&D, mais aussi qq. standardsComplexit structurale moyenne

    puissant (e.g. sets, element occurrence constraints) puissant

    Types de donnes peu (10, surtout des valeurs dattributs)puissant (44 + plus types drivables) puissant

    Complexit globale basse leve 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 nonFile suffix *.dtd *.xsd *.rng / *.rncEntits oui non ( xinclude) nonXML Daniel. K. Schneider, Webster University Geneva - TECFA, University of Geneva 29/10/09

  • XML Schema - 2. Introduction xml-schema-1-72.3 Ressources XML Schema (aussi appel XSD pour "XML Schema Definition") est difficile Une bonne faon dapprendre 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 2004url: http://www.w3.org/TR/xmlschema-2/ XML Schema Part 2: Datatypes Second Edition 2004

    Outils: Exchanger XML Editor gre XML Schema

    Support pour ldition XML Validation dune fichier XSD Validation dun XML avec des XSD Traduction DTD/XSD/Relax NGXML Daniel. K. Schneider, Webster University Geneva - TECFA, University of Geneva 29/10/09

    http://www.w3.org/XML/Schemahttp://www.w3.org/TR/xmlschema-0/http://www.w3.org/TR/xmlschema-1/

  • XML Schema - 3. XSD - structure du fichier et espaces de nom xml-schema-1-83. XSD - structure du fichier et espaces de nom

    3.1 Structure et espace de nom dun fichier XSD Comme tout fichier XML, XSD doit commencer par une dclaration XML Racine dun XSD : ... Llment schema possde des attributs (voir plus loin) XSD utilise des espaces de noms pour distinguer lments appartenant XSD (le langage)

    et les lments et attributs dfinis par un schma donn (mme principe que XSLT).

  • XML Schema - 3. XSD - structure du fichier et espaces de nom xml-schema-1-9Espaces de noms (namespaces) et prfixes On peut soit dfinir un prfixe pour les lments XSD soit pour vos lments

    Voir solution 1 et 2 ci-dessous Vous pouvez aussi choisir si vos lments XML auront un namespace

    A. Solution 1: Donner un namespace au code XSD Souvent on utilise le prfixe xs: pour le code XSD

    Parfois xsd: cela na pas dimportance elementFormDefault="qualified" veut dire que vos balises nauront pas de namespace

    Example 3-1: XSD dfinition pour une simple recette de cuisine

    Cette solution est prfrable en rgle gnrale (mais voir plus loin comment associer une XSD un fichier XML: il faut encore ajouter des attributs)XML Daniel. K. Schneider, Webster University Geneva - TECFA, University of Geneva 29/10/09

  • XML Schema - 3. XSD - structure du fichier et espaces de nom xml-schema-1-10B. Solution 2: Donner un namespace au code du schma Les lments dfinis pour votre schma ont un prfixe dans la dfinition.

    vous devez donc dfinir votre namespace (substituer "yourdomain.org/namespace") On dclare que XML Schema a le namespace par dfaut, c.a.d. les lments XSD ne seront

    pas prfixs.

    Example 3-2: XSD dfinition pour une simple recette

    XML Daniel. K. Schneider, Webster University Geneva - TECFA, University of Geneva 29/10/09

  • XML Schema - 3. XSD - structure du fichier et espaces de nom xml-schema-1-113.2 Validation Un document XML dcrit par un XSD est appel instance document. Dans XML Exchanger, clic sur licone validation, ensuite slectionner le fichier XSD

    A. Association dun XSD avec un fichier XML, Solution 1 Il faut dclarer le namespace xsi: (XMLSchema-instance) Lattribut xsi:noNamespaceSchemaLocation dfinit lURL de votre XSD Attention: il faut utiliser cela tel quel !!! Je dconseille cette solution (voir la solution 2)

    XML file (http://tecfa.unige.ch/guides/xml/examples/xsd-examples/recipe-no-ns.xml )

    ....

    XSD file (http://tecfa.unige.ch/guides/xml/examples/xsd-examples/recipe-no-ns.xsd)

    XML Daniel. K. Schneider, Webster University Geneva - TECFA, University of Geneva 29/10/09

    http://tecfa.unige.ch/guides/xml/examples/xsd-examples/recipe-no-ns.xmlhttp://tecfa.unige.ch/guides/xml/examples/xsd-examples/recipe-no-ns.xsd

  • XML Schema - 3. XSD - structure du fichier et espaces de nom xml-schema-1-12B. Association dun XSD avec XML, Solution 2Solution retenir: Lide est que chaque fragment XML fait tjrs partie dun namespace:

    1. Les fichiers XML et XSD doivent inclure une namespace declaration pour un domaineLe fichier XML doit inclure en plus:

    2. une dclaration pour le XMLSchema-instance namespace3. 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 associe (file recipe.xml)

    XML file (http://tecfa.unige.ch/guides/xml/examples/xsd-examples/recipe.xml)

    ..... ......

    En gros: Il faut substituer qc. pour le rose et le rouge ci-dessus. Faites attention la syntaxe de lattribut schemaLocation: "Namespace_url XSD_URL NameSpace_URL XSD_URL ..."XML Daniel. K. Schneider, Webster University Geneva - TECFA, University of Geneva 29/10/09

    http://tecfa.unige.ch/guides/xml/examples/xsd-examples/recipe.xml

  • XML Schema - 3. XSD - structure du fichier et espaces de nom xml-schema-1-13XSD file (http://tecfa.unige.ch/guides/xml/examples/xsd-examples/recipe.xsd)

    ....

    La XSD dfinit un namespace pour vos balises. Il faut substituer http://myrecipes.org/" par un URL de votre choix, mais de prfrence un URL

    sur lequel vous avez le contrle (par exemple votre home page).XML Daniel. K. Schneider, Webster University Geneva - TECFA, University of Geneva 29/10/09

    http://tecfa.unige.ch/guides/xml/examples/xsd-examples/recipe.xsd

  • XML Schema - 3. XSD - structure du fichier et espaces de nom xml-schema-1-14Example 3-4: IMS Content Packaging 1.1.4 et IMS/LOM Metadataurl: C.f. http://tecfa.unige.ch/guides/tie/html/pedago-normes/pedago-normes.html

    Le fichier XML utilisera deux espaces de nommage

    ...... .....

    Cet exemple montre comment utiliser deux espaces de nom pour deux XSD imscp_v1p1 est le namespace par dfaut (sans prfixe) imsmd_v1p1 est le namespace pour les mtadonnes.XML Daniel. K. Schneider, Webster University Geneva - TECFA, University of Geneva 29/10/09

    http://tecfa.unige.ch/guides/tie/html/pedago-normes/pedago-normes.html

  • XML Schema - 3. XSD - structure du fichier et espaces de nom xml-schema-1-15Extrait du fichier ims_cp_rootv1p1.xsd

    XML Daniel. K. Schneider, Webster University Geneva - TECFA, University of Geneva 29/10/09

  • XML Schema - 3. XSD - structure du fichier et espaces de nom xml-schema-1-163.3 Dfinition dlments Une structure XML est hirarchique ...

    Dfinit un lment

    Exemple dun simple lment sans enfant et sans attributs:

    Dfinition dlments enfants On peut les dfinir de deux faons:

    soit avec un lment enfant complexType soit avec un attribut "type" qui se rfre une dfinition complexType

    (1) enfant de xs:element

    XML Daniel. K. Schneider, Webster University Geneva - TECFA, University of Geneva 29/10/09

  • XML Schema - 3. XSD - structure du fichier et espaces de nom xml-schema-1-17 (2) Alternativement, on dclare un complex type seul et ensuite on lutilise dans des dclarations

    dlments.url: http://tecfa.unige.ch/guides/xml/examples/xsd-examples/recipe2.xsd

    Rfrence un type CSD

    XML Daniel. K. Schneider, Webster University Geneva - TECFA, University of Geneva 29/10/09

    http://tecfa.unige.ch/guides/xml/examples/xsd-examples/recipe2.xsd

  • XML Schema - 4. Types de donnes xml-schema-1-184. Types de donnesDfinir ce que lments ou attributs peuvent contenir. Ces types sont dans le mme namespace que les balises XSD.

    4.1 Types simplesExemples:

    Simple Type Exemples (spars par des virgules) Explication

    string Confirm this is electric A text stringbase64Binary GpM7 Base86 encoded binary datahexBinary 0FB7 HEX encoded binary datainteger ...-1, 0, 1, ...positiveInteger 1, 2, ...negativeInteger ... -2, -1nonNegativeInteger 0, 1, 2, ...

    long-9223372036854775808, ... -1, 0, 1, ... 9223372036854775807

    decimal -1.23, 0, 123.4, 1000.00

    float -INF, -1E4, -0, 0, 12.78E-2, 12, INF, NaNXML Daniel. K. Schneider, Webster University Geneva - TECFA, University of Geneva 29/10/09

  • XML Schema - 4. Types de donnes xml-schema-1-19Exemple dun lment:

    Exemple dun attribut (voir plus loin):

    boolean true, false, 1, 0

    duration P1Y2M3DT10H30M12.3S 1 year, 2 months, 3 days, 10 hours, 30 minutes, and 12.3 seconds

    dataTime 1999-05-31T13:20:00.000-05:00 May 31st 1999 at 1.20pm Eastern Standard Time

    date 1999-05-31

    time 13:20:00.000, 13:20:00.000-05:00gYear 1999Name shipTo XML 1.0 Name typeQName po:USAddress XML Namespace QNameanyURI http://www.example.com/language en-GB, en-US, fr valid values for xml:lang as defined in XML 1.0

    Simple Type Exemples (spars par des virgules) ExplicationXML Daniel. K. Schneider, Webster University Geneva - TECFA, University of Geneva 29/10/09

  • XML Schema - 4. Types de donnes xml-schema-1-204.2 Types simples dfinis par lutilisateurExample 4-1: Exemple "list":

    XSD:

    XML:20003 15037 95977 95945

    Example 4-2: "restriction" sur un mot choisirXSD:

    XML:constructivismeXML Daniel. K. Schneider, Webster University Geneva - TECFA, University of Geneva 29/10/09

  • XML Schema - 4. Types de donnes xml-schema-1-21Example 4-3: Restriction sur un nombre Le type est dfini comme enfant ici.

    XSD:

    XML:100XML Daniel. K. Schneider, Webster University Geneva - TECFA, University of Geneva 29/10/09

  • XML Schema - 5. Organisation dlments xml-schema-1-225. Organisation dlments Ici on montre qqs. design patterns pour dfinir des contraintes structurelles...

    5.1 Rfrences vs. insertion directe On conseille de dfinir tous les lments plat et ensuite y rfrer

    Elments dans lments (dconseill)

    Dfinition dlments avec une rfrence (mieux) Voir Example 5-1: Une liste denfants ordonnes [23]

    .....

    XML Daniel. K. Schneider, Webster University Geneva - TECFA, University of Geneva 29/10/09

  • XML Schema - 5. Organisation dlments xml-schema-1-235.2 Squences Les attributs minOccurs and maxOccurs dfinissent le nombre min/max. dun enfant.

    Example 5-1: Une liste denfants ordonnes

    Example 5-2: Une liste avec un ou plusieurs lments XML Daniel. K. Schneider, Webster University Geneva - TECFA, University of Geneva 29/10/09

  • XML Schema - 5. Organisation dlments xml-schema-1-24Example 5-3: Une liste avec un lment email option et rptable XML Daniel. K. Schneider, Webster University Geneva - TECFA, University of Geneva 29/10/09

  • XML Schema - 5. Organisation dlments xml-schema-1-255.3 ChoixExample 5-4: Choix dlments option et rptable

    Example 5-5: Choix obligatoire entre lments XML Daniel. K. Schneider, Webster University Geneva - TECFA, University of Geneva 29/10/09

  • XML Schema - 5. Organisation dlments xml-schema-1-265.4 Mixed contents

    5.5 Empty elements (lments vides) Dfinir un lment "vide" consiste dfinir un lment sans enfants

    Cela sapplique aussi aux "complex elements": Voir Example 6-1: Groupes dattributs (file family.xsd) [28]XML Daniel. K. Schneider, Webster University Geneva - TECFA, University of Geneva 29/10/09

  • XML Schema - 6. Attributs xml-schema-1-276. Attributs Les dclarations dattributs sont compliques en XSD, c.a.d. on dfinit un complexType. Le paramtre use: optional, prohibited or required

    dfaut est optional

    Voici quelques examples

    Mme chose, mais en plus long:

  • XML Schema - 6. Attributs xml-schema-1-28Groupes dattributs Utilis pour dclarer des attributs plus complexes Les groupes sont rutilisables, c.a.d cest lquivalent entits paramtriques pour les DTD.

    Example 6-1: Groupes dattributs (file family.xsd)url: http://tecfa.unige.ch/guides/xml/examples/xsd-examples/family.xsd

    La dfinition ci-dessus se rfre au groupe dattributs dfini ci-dessous:

    XML Daniel. K. Schneider, Webster University Geneva - TECFA, University of Geneva 29/10/09

    http://tecfa.unige.ch/guides/xml/examples/xsd-examples/family.xsd

  • XML Schema - 6. Attributs xml-schema-1-29

    Voici un fragment xml valide:url: http://tecfa.unige.ch/guides/xml/examples/xsd-examples/family.xml

    XML Daniel. K. Schneider, Webster University Geneva - TECFA, University of Geneva 29/10/09

    http://tecfa.unige.ch/guides/xml/examples/xsd-examples/family.xm

  • XML Schema - 6. Attributs xml-schema-1-306.1 Contraintes sur les valeurs Voici un exemple

    Example 6-2: Contraintes sur lage

    XML Daniel. K. Schneider, Webster University Geneva - TECFA, University of Geneva 29/10/09

  • XML Schema - 7. Traduire des DTDs vers XSD xml-schema-1-317. Traduire des DTDs vers XSD Ci-dessous qqs. chablons de traduction La plupart des diteurs ont un traducteur

    le rsultat nest pas forcment trs beau ... dans Exchanger XML Editor: Menu Schema -> Convert Schema

    7.1 Dfinition dlmentsExemples de http://www.w3.org/2000/04/schema_hack/

    DTD XML Schema

    XML Daniel. K. Schneider, Webster University Geneva - TECFA, University of Geneva 29/10/09

    http://www.w3.org/2000/04/schema_hack/

  • XML Schema - 7. Traduire des DTDs vers XSD xml-schema-1-32

    DTD XML SchemaXML Daniel. K. Schneider, Webster University Geneva - TECFA, University of Geneva 29/10/09

  • XML Schema - 7. Traduire des DTDs vers XSD xml-schema-1-337.2 Dfinition dattributsDTD XML Schema

    XML Daniel. K. Schneider, Webster University Geneva - TECFA, University of Geneva 29/10/09

  • XML Schema - 7. Traduire des DTDs vers XSD xml-schema-1-347.3 ExemplesVoir: http://tecfa.unige.ch/guides/xml/examples/xsd-examples/

    DTD XML SchemaXML Daniel. K. Schneider, Webster University Geneva - TECFA, University of Geneva 29/10/09

    http://tecfa.unige.ch/guides/xml/examples/xsd-examples/

    XML Schema1. Table des matires dtaille2. Introduction2.1 Types de grammaires XML (Schema languages)2.2 Comparaison de schmas bass sur une grammaire2.3 Ressources

    3. XSD - structure du fichier et espaces de nom3.1 Structure et espace de nom dun fichier XSD3.2 Validation3.3 Dfinition dlments

    4. Types de donnes4.1 Types simples4.2 Types simples dfinis par lutilisateur

    5. Organisation dlments5.1 Rfrences vs. insertion directe5.2 Squences5.3 Choix5.4 Mixed contents5.5 Empty elements (lments vides)

    6. Attributs6.1 Contraintes sur les valeurs

    7. Traduire des DTDs vers XSD7.1 Dfinition dlments7.2 Dfinition dattributs7.3 Exemples