1 cours 5 introduction aux schémas xml Éric laporte institut gaspard-monge université paris-est...

Download 1 Cours 5 Introduction aux schémas XML Éric Laporte Institut Gaspard-Monge Université Paris-Est Marne-la-Vallée

Post on 03-Apr-2015

103 views

Category:

Documents

0 download

Embed Size (px)

TRANSCRIPT

  • Page 1
  • 1 Cours 5 Introduction aux schmas XML ric Laporte Institut Gaspard-Monge Universit Paris-Est Marne-la-Valle
  • Page 2
  • 2 Sommaire Grammaires pour les documents XML4 Schma pour une collection d'entres8 Validateurs17 Attributs18 Types simples25 Rfrence un schma41 Inclure des lments spcifis dans d'autres schmas45 Schmas pour documents sans espaces de noms56 Documents structure complexe61
  • Page 3
  • 3 Des grammaires en XML Une DTD Un schma XML DTD ou schma XML ? Un premier schma (1/4) Un premier schma (2/4) Un premier schma (3/4) Un premier schma (4/4) Espaces de noms (1/2) Espaces de noms (2/2) Dclaration et rfrence Types (1/2) Types (2/2) Validateurs Dclarer un attribut (1/3) Dclarer un attribut (2/3) Dclarer un attribut (3/3) Attribut sur un type simple (1/4) Attribut sur un type simple (2/4) Attribut sur un type simple (3/4) Attribut sur un type simple (4/4) Types simples Types simples prdfinis (1/5) Types simples prdfinis (2/5) Types simples prdfinis (3/5) Types simples prdfinis (4/5) Types simples prdfinis (5/5) Liste balise Types simples drivs : restriction Restriction par Restriction par numration Restriction par Autres restrictions de types simples 37.Types simples drivs : liste 38.Types simples drivs : union (1/) 39.Types simples drivs : union (2/) 40.Drivations de types 41.Rfrence un schma XML (1/2) 42.Rfrence un schma XML (2/2) 43.Rfrence plusieurs schmas XML 44.Annoter un schma 45.Inclure des lments spcifis dans d'autres schmas 46.Solution avec s:import (1/2) 47.Solution avec s:import (2/2) 48.Solution avec s:any (1/2) 49.Solution avec s:any (2/2) 50.Variantes 51. 52.Schmas partiels (1/2) 53.Schmas partiels (2/2) 54.Inclure des noeuds texte (1/2) 55.Inclure des noeuds texte (2/2) 56.Schma d'un document cible sans espace de noms (1/2) 57.Schma d'un document cible sans espace de noms (2/2) 58.Document cible partiel (1/2) 59.Document cible partiel (2/2) 60.Schma pour plusieurs types de documents 61.Types complexes (1/3) 62.Types complexes (2/3) 63.Types complexes (3/3) 64. 65. (1/6) 66. (2/6) 67. (3/6) 68. (4/6) 69. (5/6) 70. (6/6)
  • Page 4
  • 4 Des grammaires en XML Chaque type de document XML a sa syntaxe XHTML, XSLFO, XSLT, CML... et on peut en dfinir de nouveaux Grammaire Dfinit la syntaxe d'un type de document Exemple : DTD Grammaire en XML : schma XML Un document est valide par rapport une grammaire s'il respecte les contraintes en plus d'tre bien form
  • Page 5
  • 5 Une DTD (...)
  • Page 6
  • 6 Un schma XML (...)
  • Page 7
  • 7 DTD ou schma XML ? DTD Format trs utilis Relativement lisible Grammaire en SGML (ancien concurrent de XML) Compatible avec XML Schma XML Grammaire en XML Permet d'engendrer du code Java Version simplifie : Relax NG Possibilits de contrle strict (ex. : entier entre 1 et 10)
  • Page 8
  • 8 Un premier schma (1/4) Une collection d'entres avec des champs simples 37 American Beauty - Theme Air american beauty soundtrack MPEG audio file 3948579 197407 2004-07-19T15:24:23Z 2004-07-20T14:09:55Z 160 44100
  • Page 9 ">
  • 9 Un premier schma (2/4) Schma correspondant
  • Page 10
  • 10 Un premier schma (3/4) (...)
  • Page 11
  • 11 Un premier schma (4/4) (...) (...)
  • Page 12 ">
  • 12 Espaces de noms (1/2) - du schma XML dclar ici avec le prfixe s - du document XML cible : c'est l'espace de noms des lments du document cible dcrits par le schma On l'appelle l'espace de noms cible du schma XML On le dclarer dans le schma XML deux fois : avec targetNameSpace et avec xmlns et un prfixe
  • Page 13 ">
  • 13 Espaces de noms (2/2) Les lments dclars par fils de appartiennent automatiquement l'espace de noms cible : pas de prfixe dans la dclaration En cas de rfrence une dclaration, utiliser le prfixe Il faut donc dclarer l'espace de noms cible avec un prfixe
  • Page 14
  • 14 Dclaration et rfrence On peut faire rfrence un nom d'lment avant de le dclarer
  • Page 15 ">
  • 15 Types (1/2) Dcrivent les contenus possibles d'un lment ou d'un attribut squence d'lments dans un ordre fixe Par dfaut, minOccurs et maxOccurs valent 1
  • Page 16
  • 16 Types (2/2) type="s:integer" un noeud texte contenant un entier type="s:string" un noeud texte quelconque type="s:dateTime" date et heure au format ISO (...) 37 American Beauty - Theme (...) 2004-07-19T15:24:23Z
  • Page 17
  • 17 Validateurs Validateur du W3C http://www.w3.org/2001/03/webdata/xsv Si l'lment racine du document cible ne correspond aucune dclaration globale (fille de s:schema), le validateur ne vrifie pas la syntaxe et produit le message : No declaration for document root found, validation was lax Exemple : le nom de l'lment racine correspond, mais pas l'espace de noms Autres validateurs Pas toujours aussi fiables que celui du W3C Altova : message moins trompeur The element declaration was not found for root element
  • Page 18
  • 18 Dclarer un attribut (1/3) On veut que l'lment Track puisse avoir un attribut (sans espace de noms) 37 American Beauty - Theme Air american beauty soundtrack MPEG audio file 3948579 197407
  • Page 19
  • 19 Dclarer un attribut (2/3) Le nom est dclar sans prfixe Dclaration locale Les attributs doivent tre dclars aprs le contenu (...)
  • Page 20
  • 20 Dclarer un attribut (3/3) type="s:boolean"true, false, 1, 0 Pour que l'attribut soit obligatoire Par dfaut, use="optional" Pour imposer une valeur Si l'attribut est prsent, sa valeur doit tre "euro" Mme possibilit pour les lments :
  • Page 21
  • 21 Attribut sur un type simple (1/4) Bloodroot Sanguinaria canadensis 4 Mostly Shady 2.44 031599 Columbine
  • Page 22
  • 22 Attribut sur un type simple (2/4)
  • Page 23
  • 23 Attribut sur un type simple (3/4)
  • Page 24
  • 24 Attribut sur un type simple (4/4) type="s:decimal" un noeud texte contenant un nombre en notation dcimale (avec point : 2.44) : dcrit les valeurs du noeud texte sous l'lment PRICE
  • Page 25
  • 25 Types simples Pour les noeuds qui contiennent du texte sans balises - un noeud de type texte - une valeur d'attribut type="s:string" un noeud texte quelconque American Beauty - Theme
  • Page 26
  • 26 Types simples prdfinis (1/5) type="s:boolean" true, false, 1, 0 type="s:integer" 0, 15, -4, +15 type="s:decimal" 2.44, 15, -2.4, +3.1416 type="s:float" 6.02214199E23 Autres types numriques : double, long, short, int, byte... type="s:dateTime" 2004-07-19T11:34:46Z type="s:date" 2004-07-19 type="s:time" 11:34:46Z type="s:gYear" 2008(dans le calendrier grgorien) type="s:gMonthDay" --09-26 (tous les 26 septembre)
  • Page 27 Le document est valide">
  • 27 Types simples prdfinis (2/5) Normalisation Les validateurs comparent la valeur trouve dans le document avec la valeur impose par le schma Les validateurs normalisent certains types avant comparaison Exemple : s:token Le document est valide
  • Page 28
  • 28 Types simples prdfinis (3/5) Normalisation type="s:string" pas de normalisation type="s:token" normalisation : remplacer toute suite de caractres blancs par 1 espace, et supprimer les espaces au dbut et la fin type="s:boolean" true = 1, false = 0 type="s:integer" 15 = +15 type="s:decimal" 2.44 = +02.40
  • Page 29
  • 29 Types simples prdfinis (4/5) Autres types texte normaliss type="s:NMTOKEN"Lettres, chiffres, [-_.:], mais pas d'espaces blancs type="s:Name"Mme chose mais commence par une lettre ou [_:] type="s:QName"Comme Name avec au plus un [:] type="s:NCName"Comme Name mais sans [:] type="s:ID"Comme NCName mais unique dans le document Le validateur supprime les espaces au dbut et la fin avant de comparer
  • Page 30
  • 30 Types simples prdfinis (5/5) Types listes prdfinis : NMTOKENS... Les chanes de caractres sont spares par des espaces Eschscholzia Papaver Sanguinaria Les types listes prdfinis font concurrence des listes balises
  • Page 31
  • 31 Liste balise Eschscholzia Papaver Sanguinaria
  • Page 32
  • 32 Types simples drivs : restriction 2.44 031599 Restriction : le type driv est inclus dans le type de base
  • Page 33
  • 33 Restriction par Caractres spciaux \ |. - ^ ? * + { } ( ) [ ] Classes de caractres Unicode \p{L} lettres\P{L} tout sauf les lettres \p{Lu} lettres majuscules\P{Lu} \p{IsBasicLatin} alphabet latin de base Ces codes sont utilisables l'intrieur des [ ] Classes de caractres Perl \s espace, tabulation, fin de ligne\S autres car. \d chiffres de tous les alphabets\D autres car.
  • Page 34
  • 34 Restriction par numration 38 All I Need Air Moon Safari Pop (...)
  • Page 35
  • 35 Restriction par Spcifie le traitement des caractres blancs effectuer pour normaliser avant comparaison chaque caractre blanc est remplac par un espace pas de traitement avant validation comme la normalisation en XSLT
  • Page 36
  • 36 Autres restrictions de types simples minExclusive maxExclusive length maxLength minLength totalDigits (valu sur la valeur logique)...
  • Page 37
  • 37 Types simples drivs : liste Eschscholzia Papaver Sanguinaria Les chanes de caractres sont spares par des espaces
  • Page 38
  • 38 Type