Title: Cours MIAGE Henry Boccon-Gibod
1Extensible Mark up Language
- Modélisation structurelle de Messages et de
Documents en XML - XML Schema
2(No Transcript)
3(No Transcript)
4(No Transcript)
5Schematron
- 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.
6RelaxNG
- à 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,
7XML 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.
8Terminologie 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)
11XML 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
12Approche 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
13Approche 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
14Approche 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
15Approche 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
16Approche 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
17Ordonnancement
- 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
18Exemple
- 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)
20Types 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
21Types 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.
22Les types simples prédéfinis
23(No Transcript)
24Les 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
-
25Exemples 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
26Liste 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
27Dé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
28Exemple
- 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
29Les 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
30Dé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
31Exemple
- 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
32Les 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
33Exemple
- 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
34Champs 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
35Les 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
36Exemple
- 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
37Ré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
38Exemple
- 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
39Les espaces de noms
40Notion 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 !
41Faut-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
42Faut-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 !
43Faut-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.
44Le 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
45Le 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
46Le 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
47Divers
48Autres fonctionnalités
- Wildcards
- any
- anyAttribute
- Annotations
- Unicité et références
- unique
- key
- keyRef
- Types et éléments abstraits
- Substitution
49(No Transcript)
50Bilan en létat de lart
51Bilan
- 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
52Bilan (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)
54Fin du module