Schémas XML

Embed Size (px)

Citation preview

  • 8/14/2019 Schmas XML

    1/24

    Schmas XML

    M.Youssfi

  • 8/14/2019 Schmas XML

    2/24

    Apports des schmas

    Conu pour pallier aux dficiences pr cites des DTD,XML Schema propose, en plus des fonctionnalits fourniespar les DTD, des nouveauts : Le typage des donnes est introduit, ce qui permet la gestion de

    boolens, d'entiers, d'intervalles de temps... Il est mme possiblede crer de nouveaux types partir de types existants.

    La notion d'hritage. Les lments peuvent hriter du contenu etdes attributs d'un autre lment.

    Le support des espaces de nom. Les indicateurs d'occurrences des lments peuvent tre tout

    nombre non ngatif. Les schmas sont trs facilement concevables par modules. Les Schmas XML sont des documents XML ce qui signifie dun

    parseur XML permet de les manipuler facilement.

  • 8/14/2019 Schmas XML

    3/24

    Structure de base dun schma xml Comme tout document XML, un Schema XML commence par

    un prologue, et a un lment racine.

    L'lment racine est l'lment xsd:schema. Les lments du XML schma sont dfinis dans lespace nom

    http://www.w3.org/2000/10/XMLSchema qui est prfix par xsd. Cela signifie que tous le lments de XML schma

    commencent par xsd ()

  • 8/14/2019 Schmas XML

    4/24

    Dclarations d'lments

    Un lment, dans un schma, se dclare avec la balise.

    Par exemple,

    remarque est un lment de type simple contacts est un lment de type complexe

  • 8/14/2019 Schmas XML

    5/24

    Dclarations d'attributs Un attribut, dans un schma, se dclare avec la balise

    . Un attribut ne peut tre que de type simple Exemple:

    Ici on dclare que contacts est un lment de type complexeet quil possde un attribut maj de type date

  • 8/14/2019 Schmas XML

    6/24

    Contraintes doccurrences pour les attribus

    L'lment attribute d'un Schema XML peut avoir troisattributs optionnels : use : indique le prsence , il peut prendre pour valeur

    required(obligatoire), optional(facultatif) ou prohibited (ne doitpas apparaitre)

    default : pour indiquer la valeur par dfaut fixed :indique l'attribut est renseign, la seule valeur que peut

    prendre l'attribut dclar est celle de l'attribut fixed. Cet attributpermet de "rserver" des noms d'attributs pour une utilisationfuture, dans le cadre d'une mise jour du schma.

    Exemple :

  • 8/14/2019 Schmas XML

    7/24

    Dclaration d'lment ne contenant que du

    texte avec un (ou plusieurs) attribut(s)

    Un tel lment est de type complexe, car il contientau moins un attribut.

    Afin de spcifier qu'il peut contenir galement dutexte, on utilise l'attribut mixed de l'lment.

    Par dfaut, mixed="false"; il faut dans ce cas forcermixed="true".

    Par exemple:

  • 8/14/2019 Schmas XML

    8/24

    Dclaration et rfrencement

    Il est beaucoup plus avantageux, pour des raisonsde clart, d'ordonner ces dclarations, ainsi qu'onpeut le voir sur cet exemple:

  • 8/14/2019 Schmas XML

    9/24

    Types de donnes : Types simples

    Types simples : types atomiques, listes et unions Types atomique:

  • 8/14/2019 Schmas XML

    10/24

    Types simples : Listes Les types listes sont des suites de types simples (ou atomiques).

    Il est possible de crer une liste personnalise, par "drivation" de typesexistants. Par exemple,

    Un lment conforme cette dclaration serait

    01 44 27 60 11. Il est galement possible d'indiquer des contraintes plus fortes sur les

    types simples ; ces contraintes s'appellent des "facettes". Elles permettent par exemple de limiter la longueur de notre numro de

    tlphone 10 nombres. Nous y reviendrons.

  • 8/14/2019 Schmas XML

    11/24

    Types simples: Unions Les listes et les types simples intgrs ne permettent pas de choisir le type de

    contenu d'un lment. On peut dsirer, par exemple, qu'un type autorise soit un nombre, soit une

    chane de caractres particuliers. Il est possible de le faire l'aide d'une dclaration d'union. Par exemple, sous rserve que le type simple numroDeTlphone ait t

    pralablement dfini (voir prcdemment), on peut dclarer...

    Les lments suivants sont alors des "instances" valides de cette dclaration :

    18

    Pompiers

  • 8/14/2019 Schmas XML

    12/24

    Types complexes

    Un lment de type simple ne peutcontenir de sous-lment.

    Il est ncessaire pour cela de le dclarerde type "complexe".

    On peut alors dclarer,

    des squences d'lments,des types de choix ou des contraintes

    d'occurrences

  • 8/14/2019 Schmas XML

    13/24

    Types complexes: squences dlments:

    Nous savons dj comment, dans une DTD, nous pouvonsdclarer un lment comme pouvant contenir une suite desous-lments, dans un ordre dtermin.

    Il est bien sr possible de faire de mme avec un schma. On utilise pour ce faire l'lment xsd:sequence, qui

    reproduit loprateur, du langage DTD. Exemple:

  • 8/14/2019 Schmas XML

    14/24

    Types Complexes : Choix dlment On peut vouloir modifier la dclaration de type

    prcdente en stipulant qu'on doive indiquer soitl'adresse d'une personne, soit son adresse lectronique.Pour cela, il suffit d'utiliser un lment xsd:choice :

  • 8/14/2019 Schmas XML

    15/24

    Types Complexe : Elment All

    Llment All indique que les lments enfants doivent apparatre une fois(ou pas du tout), et dans n'importe quel ordre.

    Cet lment xsd:all doit tre un enfant direct de l'lmentxsd:complexType.

    Par exemple...

  • 8/14/2019 Schmas XML

    16/24

    Indicateur doccurences

    Pendant la dclaration dun lment, on peutindiquer le nombre minimum et le nombremaximum de fois quil doit apparatre

    On utilise pour cela les attributs minOccurs etmaxOccurs:

    minOccurs prend par dfaut la valeur 1 et peutprendre les autres valeurs positives

    maxOccurs prend par dfaut la valeur 1 et peutprendre les autres valeurs positive ouunbounded (infini).

  • 8/14/2019 Schmas XML

    17/24

    Drivation

    Les types simples et complexes permettent djde faire plus de choses que les dclarationsdans le langage DTD.

    Il est possible de raffiner leur dclaration de tellemanire qu'ils soient une "restriction" ou une extension d'un type dj existant, en vue de

    prciser un peu plus leur forme. Nous allons nous limiter dans ce coursd'initiation la restriction des types simples.

  • 8/14/2019 Schmas XML

    18/24

  • 8/14/2019 Schmas XML

    19/24

    Drivation : Restriction de types

    Une "facette" permet de placer une contrainte sur l'ensemble desvaleurs que peut prendre un type de base.

    Par exemple, on peut souhaiter crer un type simple, appelMonEntier, limit aux valeurs comprises entre 0 et 99 inclus.

    On drive ce type partir du type simple prdfininonNegativeInteger, en utilisant la facette maxExclusive.

  • 8/14/2019 Schmas XML

    20/24

    Drivation : Restriction de types

    Il existe un nombre important de facettes quipermettent de : fixer, restreindre ou augmenter la longueur minimale

    ou maximale d'un type simple numrer toutes les valeurs possibles d'un type prendre en compte des expressions rgulires fixer la valeur minimale ou maximale d'un type (voir

    l'exemple ci-dessus) fixer la prcision du type...

  • 8/14/2019 Schmas XML

    21/24

    Drivation : Exemples de facettes

    Limiter les diffrentes valeurs possible dun type:

  • 8/14/2019 Schmas XML

    22/24

    Drivation : Exemples de facettes

    Limiter la longueur dune chane de caractres:

  • 8/14/2019 Schmas XML

    23/24

    Drivation : Exemples de facettes

    Expressions rgulires pour une adresse email:

  • 8/14/2019 Schmas XML

    24/24

    Exemple dapplication

    Un annuaire se compose de plusieurs personnes. Chaque personne est qualifi par un code et dfini par :

    Un nom qui est dcompos en nom de famille et prnom Une date de naissance

    De 1 3 adresses email qui doivent respecter la forme dune adresseemail.

    plusieurs numros de tlphone qui peuvent tre soit une lise denombres de type byte, soit une chane de caractres.

    On dfinit galement lattribut code comme cl dune personne. Ecrire le schma XML

    Ecrire un document XML correspondant. Ecrire une feuille de style xsl qui permet dafficher lannuaire en

    format HTML