Cours MIAGE Henry Boccon-Gibod - PowerPoint PPT Presentation

1 / 54
About This Presentation
Title:

Cours MIAGE Henry Boccon-Gibod

Description:

Extensible Mark up Language Mod lisation structurelle de Messages et de Documents en XML XML Schema Les connecteurs ET OU & Des types simples pr d finis Un sch ma ... – PowerPoint PPT presentation

Number of Views:82
Avg rating:3.0/5.0
Slides: 55
Provided by: democ6
Learn more at: http://democritique.org
Category:

less

Transcript and Presenter's Notes

Title: Cours MIAGE Henry Boccon-Gibod


1
Extensible Mark up Language
  • Modélisation structurelle de Messages et de
    Documents en XML
  • XML Schema

2
(No Transcript)
3
(No Transcript)
4
(No Transcript)
5
Schematron
  • Soit une structure à définir pour un exemple de
    ressource XML
  • ltPerson Title"Mr"gt
  • ltNamegtEddielt/Namegt
  • ltGendergtMalelt/Gendergt
  • lt/Persongt
  • On souhaite que soit respectée la bonne
    application des règles suivantes
  • l'élement de contexte (Person) doit avoir un
    attribut "Title"
  • l'élement de contexte doit contenir deux
    éléments "Name" et "Gender'
  • l'élement "Name" doit précéder l'élement
    "Gender"
  • Si l'attribut Title a la valeur value 'Mr,
    Gender doit avoir la valeur 'Male'
  • ces assertions seraient exprimées en Schematron
  • ltassert test"_at_Title"gtThe element Person must
    have a Title attribute.lt/assertgt
  • ltassert test"count() 2 and count(Name) 1
    and count(Gender) 1"gtThe element Person should
    have the child elements Name and Gender.lt/assertgt
  • ltassert test"1 Name"gtThe element Name must
    appear before element Gender.lt/assertgt
  • ltassert test"(_at_Title 'Mr' and Gender 'Male')
    or _at_Title ! 'Mr'"gtIf the Title is "Mr" then the
    gender of the person must be "Male". lt/assertgt
  • le texte contenu dans les balises sert de message
    envoyé en cas de non respect d'une assertion.

6
RelaxNG
  • à l'instar des DTDs et de XML Schema , une
    ressource Relax NG définit une grammaire.
  • Comme XML Schéma, RelaxNG est un langage XML
  • lt?xml version"1.0" encoding"UTF-8"?gtltgrammar
    xmlns"http//relaxng.org/ns/structure/1.0"
  • xmlnsa"http//www.monChampLexical.com/commenta
    ire"gt ltstartgt ltelement name"personne"gt
  • ltadocumentationgtcommentairelt/adocumentationgt
    ltoptionalgtltelement name"titre"gtlttext
    /gtlt/elementgtlt/optionalgt ltelement
    name"nom"gtlttext /gtlt/elementgt ltelement
    name"prenom"gtlttext /gtlt/elementgt ltelement
    name"adresse"gtlttext /gtlt/elementgt lt/elementgt lt/
    startgtlt/grammargt
  • Le même avec la forme compacte (non XML) de
    relaxNG
  • personne element titre text?, element nom
    text, element prenom text, element
    adresse text,

7
XML Schema
  • XML Schema est une recommandation du W3C
    destinée à remplacer les DTDs, ce qui était
    nécessaire pour pouvoir exprimer des
    caractéristiques introduites par le métalangage
    XML que SGML et son langage de DTD fermé ne
    permettaient pas.
  • XML ayant pour vocation d'être extensible, le
    langage XML Schema de description de contenu de
    documents XML est lui-même un document XML défini
    par un schéma, dont les balises de définition
    s'auto-définissent.(Il faut observer que pour
    être mathématiquement cohérente les
    recommandations de langages du W3C ont toujours
    une racine auto-définie de façon récursive).
  • La recommandation du W3C 1.0 se compose d'un
    document de présentation (non normatif), d'un
    document précisant comment définir la structure,
    et d'un document précisant comment définir les
    données.

8
Terminologie de XML Schema
  • Le nom de la balise racine d'un document XML
    Schema est  shema .
  • elle contient des balises nommées,
  •  element ,
  •  attribute ,
  •  simpleType ,
  •  complexType .

9
(No Transcript)
10
(No Transcript)
11
XML Schema approche par l'exemple (1)
  • Un Document XML
  • lt?xml version"1.0" encoding"UTF-8"?gt
  • ltRecetteDeCuisine xmlnsxsi "http//www.w3.org/2
    001/XMLSchema-instance" xsinoNamespaceSchemaLocat
    ion "Exemple1.xsd"gt
  • lt/RecetteDeCuisinegt

12
Approche par lexemple (2)
  • lt?xml version"1.0" encoding"UTF-8"?gt
  • ltRecetteDeCuisine xmlnsxsi"http//www.w3.org/2
    001/XMLSchema-instance" xsinoNamespaceSchemaLoca
    tion"Exemple1-bis.xsd"  date"2006-10-10"
    auteur"moi"gt
  • lt/RecetteDeCuisinegt
  • lt?xml version"1.0" encoding"UTF-8"?gt
  • ltxsschema xmlnsxs"http//www.w3.org/2001/XMLSch
    ema" elementFormDefault"qualified"gt
  • ltxselement name"RecetteDeCuisine"gt
  • ltxscomplexTypegt
  • ltxsattribute name"date"
    type"xsdate" use"required"/gt
  • ltxsattribute name"auteur"
    type"xsstring" use"required"/gt
  • lt/xscomplexTypegt
  • lt/xselementgt
  • lt/xsschemagt

13
Approche par lexemple 3
  • lt?xml version"1.0" encoding"UTF-8"?gt
  • ltRecetteDeCuisine xmlnsxsi"http//www.w3.org/20
    01/XMLSchema-instance" xsinoNamespaceSchemaLocati
    on"Exemple2.xsd"gt
  • ltingrédients/gt
  • ltprocédure/gt
  • lt/RecetteDeCuisinegt
  • lt?xml version"1.0" encoding"UTF-8"?gt
  • ltxsschema xmlnsxs"http//www.w3.org/2001/XMLSc
    hema" elementFormDefault"qualified"gt
  • ltxselement name"RecetteDeCuisine"gt
  • ltxscomplexTypegt
  • ltxssequencegt
  • ltxselement name"ingrédients"/gt
  • ltxselement name"procédure"/gt
  • lt/xssequencegt
  • lt/xscomplexTypegt
  • lt/xselementgt
  • lt/xsschemagt

14
Approche par lexemple 4
  • lt?xml version"1.0" encoding"UTF-8"?gt
  • lt!-- edited with XMLSPY v5 rel. 4 U
    (http//www.xmlspy.com) by Henry Boccon-Gibod
    (EDF RD) --gt
  • ltRecetteDeCuisine xmlnsxsi"http//www.w3.org/200
    1/XMLSchema-instance" xsinoNamespaceSchemaLocatio
    n"C\EVRY-2006\Exemples\Exemple3.xsd"gt
  • ltingrédientsgt
  • ltingrédientgtpomme de terrelt/ingrédientgt
  • ltingrédientgtoignonlt/ingrédientgt
  • ltingrédientgtsellt/ingrédientgt
  • lt/ingrédientsgt
  • ltprocéduregt
  • ltgestegtpeler les patateslt/gestegt
  • ltgestegtprécuire les patates à la vapeurlt/gestegt
  • ltgestegtpeler les oignonslt/gestegt
  • ltgestegtfaire revenir les oignonslt/gestegt
  • lt/procéduregt
  • lt/RecetteDeCuisinegt
  • lt?xml version"1.0" encoding"UTF-8"?gt
  • ltxsschema xmlnsxs"http//www.w3.org/2001/XMLSch
    ema" elementFormDefault"qualified"gt
  • ltxselement name"RecetteDeCuisine"gt
  • ltxscomplexTypegt
  • ltxssequencegt
  • ltxselement name"ingrédients"gt
  • ltxscomplexTypegt
  • ltxssequencegt
  • ltxselement name"ingrédient 
    type"xsstring" maxOccurs"unbounded"/gt
  • lt/xssequencegt lt/xscomplexTypegt lt/
    xselementgt
  • ltxselement name"procédure"gt
  • ltxscomplexTypegt
  • ltxssequencegt
  • ltxselement name"geste" type"xsstring"
    maxOccurs"unbounded"/gt
  • lt/xssequencegt
  • lt/xscomplexTypegt
  • lt/xselementgt
  • lt/xssequencegt
  • lt/xscomplexTypegt

15
Approche par lexemple 5
  • lt?xml version"1.0" encoding"UTF-8"?gt
  • ltxsschema xmlnsxs"http//www.w3.org/2001/XMLSch
    ema" elementFormDefault"qualified"gt
  • ltxselement name"RecetteDeCuisine"gt
  • ltxscomplexTypegt
  • ltxssequencegt
  • ltxselement name"ingrédients"
    type"listeIngredients"/gt
  • ltxselement name"procédure"gt
  • ltxscomplexTypegt
  • ltxssequencegt
  • ltxselement name"geste" type"xsstring"
    maxOccurs"unbounded"/gt
  • lt/xssequencegt
  • lt/xscomplexTypegt
  • lt/xselementgt
  • ltxselement name"mélangeEpices"
    type"listeIngredients" minOccurs"0"/gt
  • lt/xssequencegt
  • lt/xscomplexTypegt
  • lt/xselementgt
  • ltxscomplexType name"listeIngredients"gt
  • ltxssequencegt

16
Approche par lexemple 6
  • lt?xml version"1.0" encoding"UTF-8"?gt
  • ltxsschema xmlnsxs"http//www.w3.org/2001/XMLSch
    ema" elementFormDefault"qualified"gt
  • ltxselement name"RecetteDeCuisine"gt
  • ltxscomplexTypegt
  • ltxschoice maxOccurs"unbounded"gt
  • ltxselement name"ingrédients"
    type"listeIngredients"/gt
  • ltxselement name"procédure"gt
  • ltxscomplexTypegt
  • ltxssequencegt
  • ltxselement name"geste" type"xsstring"
    maxOccurs"unbounded"/gt
  • lt/xssequencegt
  • lt/xscomplexTypegt
  • lt/xselementgt
  • ltxselement name"mélangeEpices"
    type"listeIngredients" minOccurs"0"/gt
  • lt/xschoicegt
  • lt/xscomplexTypegt
  • lt/xselementgt
  • ltxscomplexType name"listeIngredients"gt

17
Ordonnancement
  • Sequence séquence ordonnée déléments (ET
    logique)?
  • ltcomplexType name" adresseContentType"gt ltsequen
    cegt ltelement name"IDENT" type"identType"/gt
    ltelement ref"ADRESSE-POSTALE"/gtltelement
    ref"ADRESSE-TEL"/gt ltelement
    ref"ADRESSE-ELECTRONIQUE" minOccurs"0"gt lt/seque
    ncegtlt/complexTypegt
  • Choice choix parmi un ensemble d'éléments (OU
    logique)?
  • ltcomplexType name"identType"gt ltchoicegt
    ltelement ref"RAISON-SOCIALE"/gt ltelement
    ref"IDENTITE"/gt lt/choicegtlt/complexTypegt
  • All séquence non ordonnée
  • ltcomplexType name"contactType"gt ltallgt
    ltelement name"NOM.CONTACT" type"identType"/gt
    ltelement name"COMMENTAIRE" type"string"
    minOccurs"0"/gt ltelement ref"REF.ADRESSE"
    /gt ltelement name"DATE.CONTACT"
    type"date"gt lt/allgtlt/complexTypegt
  • Utilisable uniquement au niveau le plus haut dun
    modèle de contenu et sur des éléments avec
    maxOccurs à 1 pas sur dautres groupes.
  • Contrôle des occurrences minOccurs, maxOccurs

18
Exemple
  • Si nous reprenons l'exemple culinaire,
    l'ordonnancement des ingredients peut se
    présenter comme suit
  • ltcomplexType name"plat"gt ltsequencegt
    ltelement ref"ingredient"/gt lt/sequencegt
  • lt/complexTypegt

19
(No Transcript)
20
Types et dérivation
  • Apport de lapproche "Objet"
  • Optimise la modularité
  • Dérivations de types
  • Simples et complexes
  • Par extension (ajout déléments, dattributs)?
  • Par restriction (interdiction déléments,
    dattributs, ajout de contraintes, facets sur les
    types simples)?
  • Des types abstraits
  • Utilisés comme des interfaces

ltcomplexType name"CONTACT.COMM"gt ltcomplexContentgt
ltextension base" contactType "gt ltsequencegt
ltelement name"DEMANDE"  type"string"/gt
ltelement ref"RESP.INT" /gt lt/sequencegt
lt/extensiongt lt/complexContentgt lt/complexTypegt
ltsimpleType nametelNumTypegt ltrestriction
basestringgt ltlength value14"/gt lt/res
trictiongt lt/simpleTypegt
21
Types et dérivation
  • Toutes les définitions de types se font par
    référence ou par construction à partir de types
    existants, d'où les deux possibilités
  • Extension on ajoute des informations à un type
    existant,
  • Restriction on façonne un type existant afin de
    le contraindre par rapport aux valeurs qu'il peut
    prendre.

22
Les types simples prédéfinis
23
(No Transcript)
24
Les types simples (3)?
  • language
  • en-GB, en-US, fr
  • ID
  • "A212" 
  • IDREF
  • "A212"
  • IDREFS
  • "A212" "B213"
  • ENTITY
  • ENTITIES
  • NOTATION
  • NMTOKEN, NMTOKENS
  • US
  • Brésil Canada Mexique
  • gYearMonth
  • 1999-02
  • gDay
  • ---31
  • gMonthDay
  • --05-31
  • Name
  • shipTo
  • QName
  • poAddress
  • NCName
  • Address
  • anyURI
  • http//www.example.com/,
  • http//www.example.com/doc.htmlID5
  •  

25
Exemples de simpleTypes
  • Decrivons les différents types d'unités de mesure
    (gramme, kilogramme, litre respectivement 3, 2, 2
    digits)
  • ltxssimpleType name''gramme''gt
  • ltxsrestriction base''xsinteger''gtltxslength
    value''3''/gtlt/xsrestrictiongt
  • lt/xssimpleTypegt
  • ltxssimpleType name''kilogramme''gt
  • ltxsrestriction base''xsinteger''gtltxslength
    value''2''/gtlt/xsrestrictiongt
  • lt/xssimpleTypegt
  • ltxssimpleType name''litre''gt
  • ltxsrestriction base''xsinteger''gtltxslength
    value''2''/gtlt/xsrestrictiongt
  • lt/xssimpleTypegt

26
Liste et union de types simples
  • list pour structurer un contenu textuel comme
    une liste
  • ltsimpleType name"ListePrenom"gt
  • ltlist itemType"string"/gt
  • lt/simpleTypegt
  • Sur lequel on peut imposer des contraintes
  • ltsimpleType name"ListePrenom3"gt
  • ltrestriction base"ListePrenom"gt
  • ltlength value"3" /gt
  • lt/restrictiongt
  • lt/simpleTypegt
  • union pour fusionner plusieurs types simples
  • ltsimpleType name"moneyInternational"gt
  • ltunion memberTypes"Euros Dollars" /gt
  • lt/simpleTypegt

ltlistePrenomgtPierre Paul Jacqueslt/listePrenomgt
27
Dérivation de types simples
  • Contraintes sur type simple prédéfini
  • Utilisation de facettes
  • Taille fixe, minimale, maximale, nombre de
    chiffres après la virgule
  • Domaine de valeurs (bornes min et max) pour les
    types ordonnés
  • Expressions régulières Perl
  • Exemple
  • ltxsdsimpleType name''RepereFonctionnel"gt
  • ltxsdrestriction base"xsdstring"gt
  • ltxsdpattern value"A-Z30-93A-Z2"/gt
  • lt/xsdrestrictiongt
  • lt/xsdsimpleTypegt

28
Exemple
  • Décrivons les types d'unités de mesure possibles
    avec les abréviations communes (gr pour gramme,
    kg pour kilogramme, l pour litre ...) en
    utilisant le méchanisme de dérivation
  • ltxssimpleType name''unite"gt
  • ltxsdrestriction base"xsstring"gt
  • ltxsenumeration value''gr''/gt
  • ltxsenumeration value''kg''/gt
  • ltxsenumeration value''l''/gt
  • lt/xsrestrictiongt
  • lt/xssimpleTypegt

29
Les types complexes
  • Exemple
  • ltxsdcomplexType name"USAddress"gt
  • ltxsdsequencegt
  • ltxsdelement name"name" type"xsdstring"/gt
  • ltxsdelement name"street" type"xsdstring"/gt
  • ltxsdelement name"city" type"xsdstring"/gt
  • ltxsdelement name"state" type"xsdstring"/gt
  • ltxsdelement name"zip" type"xsddecimal"/gt
  • lt/xsdsequencegt
  • ltxsdattribute name"country" type"xsdNMTOKEN"
    fixedUS"/gt
  • lt/xsdcomplexTypegt
  • Définition d'objets complexes
  • ltsequencegt collection ordonnée d'éléments typés
  • ltallgt collection non ordonnée d'éléments typés
  • ltchoicegt choix entre éléments typés
  • Caractérisation du modèle de contenu
  • Mixed
  • Nillable
  • Empty

30
Dérivation de types complexes
  • Définition de sous-types par héritage
  • Par extension ajout d'informations
  • Par restriction ajout de contraintes
  • Possibilité de contraindre la dérivation
  • Final interdit la dérivation du type
  • Block empêche la substitution de types
  • Exemple
  • ltcomplexType name"AdressePays"gt
  • ltcomplexContentgt
  • ltextension base"Adresse"gt
  • ltsequencegt
  • ltelement name"pays" type"string"/gt
  • lt/sequencegt
  • lt/extensiongt
  • lt/complexContentgt
  • lt/complexTypegt

31
Exemple
  • Decrivons un ingrédient par extension en ajoutant
    une information de type conservation qui possède
    les attributs temperature et temps
  • ltxssimpleType name''conservation''
    type''xsstring''/gt
  • ltxscomplexType name''ingredient2''gt
  • ltxscomplexContentgt
  • ltxsextension base''ingredient''gt
  • ltxselement type''conservation''/gt
  • lt/xsextensiongt
  • lt/xscomplexContentgt
  • lt/xscomplexTypegt

32
Les attributs
  • En XML schema il est possible (comme avec les
    DTD) de déclarer des attributs qui sont aussi
    soumis au processus de typage
  • Un attribut peut être déclaré au sein de
    l'élement (de manière anonyme)
  • ltxselement ....
  • ltxsattribute name''att'' type''xstype''/gt
  • lt/xselementgt
  • Sa déclaration peut être factorisée
  • ltxselement ....
  • ltxsattributeGroup ref''monAtt''/gt
  • lt/xselementgt
  • ltxsattributeGroup name"monAtt"gt
  • ltxsattribute name''att'' type''xstype''/gt
  • lt/xsattributeGroupgt

33
Exemple
  • Définition en XML Schema des attributs de
    l'élement ingredient
  • ltxscomplexType name''ingredient''gt
  • ltxsattribute name''quantite''
    type''xsfloat''/gt
  • ltxsattribute name''unite'' type''xsNMTOKEN''/gt
  • ...
  • lt/xscomplexTypegt

34
Champs lexicaux Espaces de Noms
  • Un schéma fournit
  • Des définitions de types
  • Des déclarations déléments et dattributs
  • appartenant à un espace de noms
  • Chaque instance de document
  • Utilise un ou plusieurs espaces de noms
  • Peut associer chaque espace de nom à un schéma
  • ltpopurchaseOrder xmlnspo"http//www.example.com
    /PurchaseOrder" xsischemaLocation"
    http//www.example.com/PurchaseOrder po.xsd"gt
  • lt/popurchaseOrdergt

35
Les patrons, dits  patterns 
  • Contraintes sur type simple prédéfini
  • Utilisation d'expression régulières
  • Similaires à celles de Perl, Python, Tcl, Java
  • Exemple
  • ltxsdsimpleType name RepereFonctionnel"gt
  • ltxsdrestriction base"xsdstring"gt
  • ltxsdpattern value"A-Z30-93A-Z2"/gt
  • lt/xsdrestrictiongt
  • lt/xsdsimpleTypegt

36
Exemple
  • L'utilisation des expressions régulières permet
    de définir de manière plus ou moins précise les
    contenus possibles pour un type. Décrivons le
    type temperature pour qu'il n'accepte que la
    forme nn,nnC
  • ltxssimpleType name''temperature''gt
  • ltxsrestriction base''xsstring''gt
  • ltxspattern value''0-92(,0-92)?C''/gt
  • lt/xsrestrictiongt
  • lt/xssimpleTypegt
  • De même pour le type gramme
  • ltxssimpleType name''gramme''gt
  • ltxsrestriction base''xsstring''gt
  • ltxspattern value''0-92(,0-92)?gr''/gt
  • lt/xsrestrictiongt
  • lt/xssimpleTypegt

37
Réutilisation
  • Possibilité de référencer localement un élément
    global
  • ltelement ref"Nom" /gt (Nom défini au premier
    niveau)?
  • Importe l'élément et son type
  • Définition de modèles réutilisables dans un
    schéma
  • group
  • attributeGroup
  • Possibilité d'importer les types associés à un
    espace de noms
  • ltimport nameSpace "http// ..."
  • schemaLocation "http// ..." /gt
  • Possibilité dinclure ou d'étendre un schéma
  • ltinclude schemaLocation"http// ..."/gt
  • ltredefine schemaLocation"http// ..."/gt
  • .... Extensions ...
  • lt/redefinegt

38
Exemple
  • Réutilisation d'un schema existant déclarant des
    ingredients
  • ltxsschema.. xmlnsrecette''http//
    recette.cuisine.org''..gt
  • ltimport nameSpace "http// recette.cuisine.org''
  • schemaLocation "http//recette.cuisine.org/model
    es/ingredients.xsd"/gt
  • ...
  • ltxselement name''plat''gt
  • ltxssequencegt
  • ltxselement name''ingredient1''
    type''recetteingredient''/gt
  • lt/xssequencegt
  • lt/xselementgt
  • ...
  • lt/xsschemagt

39
Les espaces de noms
40
Notion despace de noms
  • Un espace de nom est aux expressions
    informatiques ce qu'un champ lexical est aux
    langues vivantes
  • Un espace de nom (namespace)
  • permet de garantir l'unicité d'un vocabulaire,
  • est dépositaire du modèle (de nommage) via
    l'association d'une URI qui documente et
    versionne ce dernier,
  • permet de poser des choix de conception d'un XML
    Schema pour guider la réutilisabilité des
    élements qu'il déclare, on parle alors
  • De forme qualifiée,
  • Et de forme non qualifiée.
  • ltnsnoeudgt ... lt/nsnoeudgt est une forme
    qualifiée,
  • ltnoeudgt ... lt/noeudgt ne l'est pas s'il n'y a pas
    de déclaration implicite.
  • gt importance de l'utilisation des espaces de
    noms !

41
Faut-il qualifier ou non ?
  • La qualification des éléments dépend des choix de
    conception d'un XML Schema
  • Un même document XML peut être validé par deux
    Schémas XML différents.

ltelement name"purchaseOrder" type"poPurchaseOrd
erType"/gt ltelement name"shipTo"
type"poUSAddress"/gt ltelement name"billTo"
type"poUSAddress"/gt ltelement name"comment"
type"string"/gt ltelement name"name"
type"string"/gt ltelement name"street"
type"string"/gt ltcomplexType name"PurchaseOrderT
ype"gt ltsequencegt ltelement ref"poshipTo"/gt
ltelement ref"pobillTo"/gt ltelement
ref"pocomment" minOccurs"0"/gt lt!-- etc.
--gt lt/sequencegt lt/complexTypegt ltcomplexType
name"USAddress"gt ltsequencegt ltelement
ref"poname"/gt ltelement ref"postreet"/gt
lt!-- etc. --gt lt/sequencegt lt/complexTypegt
ltelement name"purchaseOrder" type"poPurchaseOrd
erType"/gt ltelement name"comment"
type"string"/gt ltcomplexType name"PurchaseOrderT
ype"gt ltsequencegt ltelement name"shipTo"
type"poUSAddress"/gt ltelement name"billTo"
type"poUSAddress"/gt ltelement
ref"pocomment" minOccurs"0"/gt lt!-- etc.
--gt lt/sequencegt lt!-- etc. --gt
lt/complexTypegt ltcomplexType name"USAddress"gt
ltsequencegt ltelement name"name"
type"string"/gt ltelement name"street"
type"string"/gt lt!-- etc. --gt lt/sequencegt
lt/complexTypegt
42
Faut-il qualifier ou non ?
  • Les deux schémas précédents peuvent être
    équivalents
  • Le premier déclare deux éléments globaux
    purchaseOrder et comment
  • Le second déclare plus d'élements globaux
  • PurchaseOrder
  • ShipTo
  • BillTo
  • Comment
  • Name street
  • Les élements globaux sont considérés comme des
    racines potentielles pour un document XML !
  • Les déclarations locales (i.e. Au sein de la
    déclaration d'un élement) restent ''anonymes'' et
    leur portée contextuelle,
  • Les déclarations globales sont visibles de tous
    et peuvent générer des conflits !

43
Faut-il qualifier ou non ?
  • Plus il y a d'élements globaux, plus le risque
    d'entrer en conflit avec un autre XML Schema est
    grand
  • Si la définition fait partie d'un ensemble, il
    est conseillé de qualifier pour éviter les
    conflits,
  • Si elle représente un modèle unique de documents,
    avec peu voir pas d'utilisations de vocabulaires
    externes
  • Il est possible de ne rien qualifier,
  • Dans le doute, éviter de multiplier les élements
    globaux et qualifier la racine uniquement.

44
Le processus de qualification
  • Lorsque l'on crée un XML Schema, il faut lui
    associer un espace de nom cible
  • Il identifiera de facon unique le modèle
  • Syntaxe targetNameSpace''http//www.domain.name
    /qualifier''
  • Tout document se réclamant instance de ce modèle
    doit importer cet espace de noms.
  • Si l'on veut qualifier les élements et/ou les
    attributs
  • ElementFormDefault ''truefalse''
  • AttributeFormDefaut ''truefalse''
  • Syntaxe complète
  • ltschema xmlns"http//www.w3.org/2001/XMLSchema"
  • xmlnspo"http//www.example.com/PO1"
  • targetNamespace"http//www.example.com/PO
    1"
  • elementFormDefault"qualified"
  • attributeFormDefault"unqualified"gt

45
Le processus de qualification
  • Exemple de document utilisant une forme qualifiée
    explicite
  • lt?xml version"1.0"?gt
  • ltapopurchaseOrder xmlnsapo"http//www.example.c
    om/PO1"
  • orderDate"1999-10-20"gt
  • ltaposhipTo country"US"gt
  • ltaponamegtAlice Smithlt/aponamegt
  • ltapostreetgt123 Maple Streetlt/apostreetgt
  • lt!-- etc. --gt
  • lt/aposhipTogt
  • ltapobillTo country"US"gt
  • ltaponamegtRobert Smithlt/aponamegt
  • ltapostreetgt8 Oak Avenuelt/apostreetgt
  • lt!-- etc. --gt
  • lt/apobillTogt
  • ltapocommentgtHurry, my lawn is going
    wild!lt/apocommentgt
  • lt!-- etc. --gt
  • lt/apopurchaseOrdergt

46
Le processus de qualification
  • Exemple de document utilisant une forme qualifiée
    implicite
  • lt?xml version"1.0"?gt
  • ltpurchaseOrder xmlns"http//www.example.com/PO1"
  • orderDate"1999-10-20"gt
  • ltshipTo country"US"gt
  • ltnamegtAlice Smithlt/namegt
  • ltstreetgt123 Maple Streetlt/streetgt
  • lt!-- etc. --gt
  • lt/shipTogt
  • ltbillTo country"US"gt
  • ltnamegtRobert Smithlt/namegt
  • ltstreetgt8 Oak Avenuelt/streetgt
  • lt!-- etc. --gt
  • lt/billTogt
  • ltcommentgtHurry, my lawn is going
    wild!lt/commentgt
  • lt!-- etc. --gt
  • lt/purchaseOrdergt

47
Divers
48
Autres fonctionnalités
  • Wildcards
  • any
  • anyAttribute
  • Annotations
  • Unicité et références
  • unique
  • key
  • keyRef
  • Types et éléments abstraits
  • Substitution

49
(No Transcript)
50
Bilan en létat de lart
51
Bilan
  • Intérêt
  • Conception modélisation de classe dobjets
  • Lisibilité
  • Compatibilité XML et espaces de noms
  • Pouvoir de description des structures et des
    types
  • Pouvoir d'expression de contraintes
  • Très modulaire
  • Mécanisme de modularisation des modèles
    (inclusions et dérivation)?
  • Permet des architectures de modèles ouvertes
  • XML comme langage
  • Toute lingénierie réutilisable
  • Exploitation validation et utilisation
    multiples
  • Coopération plusieurs schémas sur une même
    instance (modularité)?
  • Application spécifique une instance validée et
    utilisée dans un contexte applicatif précis

52
Bilan (suite)?
  • Limite
  • Spécification complexe
  • Forme verbeuse
  • Outils (de validation) extrêmement limités et
    "bogués" aujourd'hui
  • Contraintes sur les atomes (données), mais pas
    sur les inter-relations
  • Quel est le rôle du modèle ? Quel est le rôle de
    lapplicatif ?
  • Ne permet pas la fragmentation de fichiers de
    données
  • Nécessité d'une coopération avec DTD ou
    utilisation de Xinclude
  • Attention compatibilité DTD
  • Vigilance sur fonctionnalités Schema utilisées si
    nécessité den dériver une DTD

53
(No Transcript)
54
Fin du module
Write a Comment
User Comments (0)
About PowerShow.com