le langage de documents xml · 2018-03-09 · standards avantages et inconv enients / tr es verbeux...
TRANSCRIPT
IntroductionXML
DescriptionTraitements
Le langage de documents XML
Anne-Laure Ligozat
ENSIIE
derniere maj: mars 2017
1 / 102
IntroductionXML
DescriptionTraitements
1 Introduction
2 Langage de description de donnees : XML
3 Description de documents
4 Traitement des documents
2 / 102
IntroductionXML
DescriptionTraitements
XML, pour quoi faire ?HistoriqueStandards
1 IntroductionXML, pour quoi faire ?HistoriqueStandards
2 Langage de description de donnees : XMLDefinition d’un document XMLDocument bien formeRegles de bonne conception
3 Description de documentsDescription structurelle de documentsDescription typee de documents
4 Traitement des documentsInterfaces de programmation : SAX et DOMSelection d’informations : XPathTransformation d’un document
3 / 102
IntroductionXML
DescriptionTraitements
XML, pour quoi faire ?HistoriqueStandards
1 IntroductionXML, pour quoi faire ?HistoriqueStandards
2 Langage de description de donnees : XMLDefinition d’un document XMLDocument bien formeRegles de bonne conception
3 Description de documentsDescription structurelle de documentsDescription typee de documents
4 Traitement des documentsInterfaces de programmation : SAX et DOMSelection d’informations : XPathTransformation d’un document
4 / 102
IntroductionXML
DescriptionTraitements
XML, pour quoi faire ?HistoriqueStandards
Programmation logicielle
= programmation
utilisationcompilation,modelisation...
+ donnees
stockage: bases de donneesstockage a long terme, echange: ?
Stockage/echange sur long terme
dans certains domaines (aeronautique par exemple), produits aveccycles de vie de plusieurs decennies
besoin d’une representation explicite (par ex stockage dans fichiers)
approche naive: definir un format (binaire ?) de representation et unparser
mais pose probleme lorsque plusieurs machines/entreprises doiventcommuniquer !
5 / 102
IntroductionXML
DescriptionTraitements
XML, pour quoi faire ?HistoriqueStandards
Motivation pour XML
un seul langage pour decrire et echanger des donnees
6 / 102
IntroductionXML
DescriptionTraitements
XML, pour quoi faire ?HistoriqueStandards
Pourquoi ce cours ?
Objectifs de XML
XML = eXtensible Markup Language
XML = meta-langage universel pour les donnees sur le Web, quipermet au developpeur de delivrer du contenu depuis les applicationsa d’autres applications ou aux navigateurs
Apports decisifs
extensibilite et structure
modularite et reutilisation de structures types
controle de validite
dissociation forme (presentation) et fond (donnees)
format d’echange general independant du materiel et logiciel (texte)
richesse des standards derives
7 / 102
IntroductionXML
DescriptionTraitements
XML, pour quoi faire ?HistoriqueStandards
1 IntroductionXML, pour quoi faire ?HistoriqueStandards
2 Langage de description de donnees : XMLDefinition d’un document XMLDocument bien formeRegles de bonne conception
3 Description de documentsDescription structurelle de documentsDescription typee de documents
4 Traitement des documentsInterfaces de programmation : SAX et DOMSelection d’informations : XPathTransformation d’un document
8 / 102
IntroductionXML
DescriptionTraitements
XML, pour quoi faire ?HistoriqueStandards
Historique
Au debut etait SGML
1969 : C. Goldfarb, E. Mosher, R. Lorie inventent GML chez IBM
cree pour editer des documents, les mettre en page et les partager ausein de systemes de gestion editoriaux
1986 : devient une norme internationale Standard GeneralizedMarkup Language (ISO 8879)
prevu pour Gestion Electronique de Documents (GED) tres complexelisible par l’etre humain et traitable par une machinemetalangage de balisage de documents : permet de definir deslangages de balisage
9 / 102
IntroductionXML
DescriptionTraitements
XML, pour quoi faire ?HistoriqueStandards
Historique
∗
HTML
langage de description de pages web
instance de SGML, adapte a la presentation/ liens trop simples/ inadapte a l’echange entre programmes/ inadapte au traitement automatique du contenu des documents
∗1991 : premiere description, 1995 : HTML 2.0, 1997 : HTML 3.2 recommandation W3C
10 / 102
IntroductionXML
DescriptionTraitements
XML, pour quoi faire ?HistoriqueStandards
Historique
XML
nouveau langage d’echange de documents fonde sur le balisage
plus simple que SGMLpas limite ”presentation” comme HTML
developpe par le XML Working Group dirige par le W3C (depuis1996)
XML 1.0 = recommandation officielle du W3C depuis le 10 fevrier1998, 5e version en 2008
11 / 102
IntroductionXML
DescriptionTraitements
XML, pour quoi faire ?HistoriqueStandards
Applications
publication multisupports
echange de donnees (B2B, ETL, XML EDI...)
gestion de documents semi-structures
integration de donnees heterogenes
...
12 / 102
IntroductionXML
DescriptionTraitements
XML, pour quoi faire ?HistoriqueStandards
Avantages et inconvenients
/ tres verbeux ⇒ balisage repetitif, fichiers volumineux
, repond aux objectifs ambitieux de duree dans le temps, standardlargement partage
13 / 102
IntroductionXML
DescriptionTraitements
XML, pour quoi faire ?HistoriqueStandards
1 IntroductionXML, pour quoi faire ?HistoriqueStandards
2 Langage de description de donnees : XMLDefinition d’un document XMLDocument bien formeRegles de bonne conception
3 Description de documentsDescription structurelle de documentsDescription typee de documents
4 Traitement des documentsInterfaces de programmation : SAX et DOMSelection d’informations : XPathTransformation d’un document
14 / 102
IntroductionXML
DescriptionTraitements
XML, pour quoi faire ?HistoriqueStandards
Galaxie des standards autour de XML
XSchema : schemas de documents
XSL, XSLT : presentations, transformations
SAX : API de programmation evenementielle
DOM : API de programmation objet
SOAP : protocole web services
RDF : description de graphes de documents
SMIL : presentations multimedia
SVG : langage de representation de dessinsvectoriels
Cml, MathML, ebXML... : standards parmetiers
...
15 / 102
IntroductionXML
DescriptionTraitements
XML, pour quoi faire ?HistoriqueStandards
Differents standards
16 / 102
IntroductionXML
DescriptionTraitements
XML, pour quoi faire ?HistoriqueStandards
XML vs JSON
JSON: JavaScript Object Notation
XML
<employees><employee>
<f i r s t N a m e>John</ f i r s t N a m e><lastName>Doe</ lastName>
</ employee><employee>
<f i r s t N a m e>Anna</ f i r s t N a m e><lastName>Smith</ lastName>
</ employee><employee>
<f i r s t N a m e>P e t e r</ f i r s t N a m e><lastName>Jones</ lastName>
</ employee></ employees>
JSON
{” employees ” : [{” f i r s t N a m e ” : ” John ” ,
” lastName ” : ”Doe”} ,{” f i r s t N a m e ” : ”Anna” ,
” lastName ” : ” Smith ”} ,{” f i r s t N a m e ” : ” P e t e r ” ,
” lastName ” : ” Jones ”}]}
17 / 102
IntroductionXML
DescriptionTraitements
XML, pour quoi faire ?HistoriqueStandards
XML vs JSON
XML
+ lisibiliteannotationsvalidationtypageoutils/standards
- taille des donnees
JSON
+ lisibilitesyntaxe simplefacilite d’integration enprogrammation webvalidation (JSONschema)
- annotation
18 / 102
IntroductionXML
DescriptionTraitements
Definition d’un document XMLDocument bien formeRegles de bonne conception
1 IntroductionXML, pour quoi faire ?HistoriqueStandards
2 Langage de description de donnees : XMLDefinition d’un document XMLDocument bien formeRegles de bonne conception
3 Description de documentsDescription structurelle de documentsDescription typee de documents
4 Traitement des documentsInterfaces de programmation : SAX et DOMSelection d’informations : XPathTransformation d’un document
19 / 102
IntroductionXML
DescriptionTraitements
Definition d’un document XMLDocument bien formeRegles de bonne conception
1 IntroductionXML, pour quoi faire ?HistoriqueStandards
2 Langage de description de donnees : XMLDefinition d’un document XMLDocument bien formeRegles de bonne conception
3 Description de documentsDescription structurelle de documentsDescription typee de documents
4 Traitement des documentsInterfaces de programmation : SAX et DOMSelection d’informations : XPathTransformation d’un document
20 / 102
IntroductionXML
DescriptionTraitements
Definition d’un document XMLDocument bien formeRegles de bonne conception
Commencons par un exemple !
<?xml version=”1.0” encoding=”UTF-8”? ><!−− C a t a l o g u e d ’ une l i b r a i r i e −−>< l i b r a i r i e>
< l i v r e c a t e g o r i e=” e n f a n t s ”>< t i t r e l a n g u e=” en ”>
Harry P o t t e r</ t i t r e><a u t e u r>J K. Rowl ing</ a u t e u r><annee>2005</ annee><p r i x>29 ,99</ p r i x>
</ l i v r e>< l i v r e c a t e g o r i e=” programmation ”>
< t i t r e l a n g u e=” f r ”>A p p r e n t i s s a g e de l a programmation
avec Ocaml</ t i t r e><a u t e u r>C a t h e r i n e Dubois</ a u t e u r><annee>2004</ annee><p r i x>39 ,95</ p r i x>
</ l i v r e></ l i b r a i r i e>
Document XML compose de :
un prologue
des elements organiseshierarchiquement
dont un element racine
des commentaires
21 / 102
IntroductionXML
DescriptionTraitements
Definition d’un document XMLDocument bien formeRegles de bonne conception
Commencons par un exemple !
<?xml version=”1.0” encoding=”UTF-8”? ><!−− C a t a l o g u e d ’ une l i b r a i r i e −−>< l i b r a i r i e>
< l i v r e c a t e g o r i e=” e n f a n t s ”>< t i t r e l a n g u e=” en ”>
Harry P o t t e r</ t i t r e><a u t e u r>J K. Rowl ing</ a u t e u r><annee>2005</ annee><p r i x>29 ,99</ p r i x>
</ l i v r e>< l i v r e c a t e g o r i e=” programmation ”>
< t i t r e l a n g u e=” f r ”>A p p r e n t i s s a g e de l a programmation
avec Ocaml</ t i t r e><a u t e u r>C a t h e r i n e Dubois</ a u t e u r><annee>2004</ annee><p r i x>39 ,95</ p r i x>
</ l i v r e></ l i b r a i r i e>
Document XML compose de :
un prologue
des elements organiseshierarchiquement
dont un element racine
des commentaires
21 / 102
IntroductionXML
DescriptionTraitements
Definition d’un document XMLDocument bien formeRegles de bonne conception
Commencons par un exemple !
<?xml version=”1.0” encoding=”UTF-8”? ><!−− C a t a l o g u e d ’ une l i b r a i r i e −−>< l i b r a i r i e>
< l i v r e c a t e g o r i e=” e n f a n t s ”>< t i t r e l a n g u e=” en ”>
Harry P o t t e r</ t i t r e><a u t e u r>J K. Rowl ing</ a u t e u r><annee>2005</ annee><p r i x>29 ,99</ p r i x>
</ l i v r e>< l i v r e c a t e g o r i e=” programmation ”>
< t i t r e l a n g u e=” f r ”>A p p r e n t i s s a g e de l a programmation
avec Ocaml</ t i t r e><a u t e u r>C a t h e r i n e Dubois</ a u t e u r><annee>2004</ annee><p r i x>39 ,95</ p r i x>
</ l i v r e></ l i b r a i r i e>
Document XML compose de :
un prologue
des elements organiseshierarchiquement
dont un element racine
des commentaires
21 / 102
IntroductionXML
DescriptionTraitements
Definition d’un document XMLDocument bien formeRegles de bonne conception
Commencons par un exemple !
<?xml version=”1.0” encoding=”UTF-8”? ><!−− C a t a l o g u e d ’ une l i b r a i r i e −−>< l i b r a i r i e>
< l i v r e c a t e g o r i e=” e n f a n t s ”>< t i t r e l a n g u e=” en ”>
Harry P o t t e r</ t i t r e><a u t e u r>J K. Rowl ing</ a u t e u r><annee>2005</ annee><p r i x>29 ,99</ p r i x>
</ l i v r e>< l i v r e c a t e g o r i e=” programmation ”>
< t i t r e l a n g u e=” f r ”>A p p r e n t i s s a g e de l a programmation
avec Ocaml</ t i t r e><a u t e u r>C a t h e r i n e Dubois</ a u t e u r><annee>2004</ annee><p r i x>39 ,95</ p r i x>
</ l i v r e></ l i b r a i r i e>
Document XML compose de :
un prologue
des elements organiseshierarchiquement
dont un element racine
des commentaires
21 / 102
IntroductionXML
DescriptionTraitements
Definition d’un document XMLDocument bien formeRegles de bonne conception
Visualisation dans le navigateur firefox
22 / 102
IntroductionXML
DescriptionTraitements
Definition d’un document XMLDocument bien formeRegles de bonne conception
Visualisation (simplifiee) sous forme d’arbre
23 / 102
IntroductionXML
DescriptionTraitements
Definition d’un document XMLDocument bien formeRegles de bonne conception
Prologue
<?xml version=”1.0” encoding=”UTF-8”? >
facultatif
si existe, premiere ligne du document
precise l’encodage des caracteres (UTF-8 par defaut)
pour l’affichage par exemple des caracteres accentues: e, e, A...
24 / 102
IntroductionXML
DescriptionTraitements
Definition d’un document XMLDocument bien formeRegles de bonne conception
Elements
<?xml version=”1.0” encoding=”UTF-8”? ><!−− C a t a l o g u e d ’ une l i b r a i r i e −−>< l i b r a i r i e>
< l i v r e><c a t e g o r i e name=” e n f a n t s ”/>< t i t r e l a n g u e=” en ”>
Harry P o t t e r</ t i t r e><a u t e u r>J K. Rowl ing</ a u t e u r><annee>2005</ annee><p r i x u n i t=” e u r o ”>29 ,99</ p r i x>
</ l i v r e>< l i v r e>
<c a t e g o r i e name=” programmation ”/>< t i t r e l a n g u e=” f r ”>
A p p r e n t i s s a g e de l a programmationavec <motCle>Ocaml</ motCle>
</ t i t r e><a u t e u r>C a t h e r i n e Dubois</ a u t e u r><annee>2004</ annee><p r i x u n i t=” e u r o ”>39 ,95</ p r i x>
</ l i v r e></ l i b r a i r i e>
Composition d’un element
nom
attributs
contenu :
vide (categorie)forme d’elements (livre)forme de texte (auteur,annee, prix, motCle)forme d’un melanged’elements et de texte (titre)
25 / 102
IntroductionXML
DescriptionTraitements
Definition d’un document XMLDocument bien formeRegles de bonne conception
Elements de syntaxe XML
un texte est une chaıne de caracteres
si un texte contient des delimiteurs XML (<, >, &), l’inclure dansune section CDATA pour qu’il ne soit pas analyse :
une section CDATA commence par <![CDATA[ et finit par ]] >ex : <![CDATA[texte non analyse]] >
un attribut a un nom et une valeur qui est une chaıne de caracteres(heure=”18.00”)
chaque element est marque par une paire de balises ouvrante etfermante
26 / 102
IntroductionXML
DescriptionTraitements
Definition d’un document XMLDocument bien formeRegles de bonne conception
Espaces de nom
Motivation
Des elements peuvent avoir le meme nom mais correspondre a un contenuet un sens differents, par exemple venant de deux applications differentes
Document HTML
<t a b l e><t r>
<td>A pp l es</ td><td>Bananas</ td>
</ t r></ t a b l e>
Document concernant des meubles
<t a b l e><name>A f r i c a n C o f f e e Table</name><width>80</ width><l e n g t h>120</ l e n g t h>
</ t a b l e>
⇒ necessaire de gerer le conflit si documents integres
27 / 102
IntroductionXML
DescriptionTraitements
Definition d’un document XMLDocument bien formeRegles de bonne conception
Espaces de nom
prefixes devant le nom des elements
espaces de nom pour definir les prefixes de l’element et de ses fils
syntaxe: xmlns:prefix=”URI”l’URI ne sert qu’a donner un nom unique a l’espace de nom
Document XML
<r o o t><h: t a b l e>
<h: t r><h:td>A pp l es</h:td><h:td>Bananas</h:td>
</h: t r></h: t a b l e>
<f: t a b l e><f:name>A f r i c a n C o f f e e Table</f:name><f:w idth>80</f:w idth><f: l e n g t h>120</f: l e n g t h>
</f: t a b l e></ r o o t>
28 / 102
IntroductionXML
DescriptionTraitements
Definition d’un document XMLDocument bien formeRegles de bonne conception
Espaces de nom
prefixes devant le nom des elements
espaces de nom pour definir les prefixes de l’element et de ses fils
syntaxe: xmlns:prefix=”URI”l’URI ne sert qu’a donner un nom unique a l’espace de nom
Document XML
<r o o t><h: t a b l e xmlns:h=”http://www.w3.org/TR/html4/”>
<h: t r><h:td>A pp l es</h:td><h:td>Bananas</h:td>
</h: t r></h: t a b l e>
<f: t a b l e xmlns:f=”http://www.w3schools.com/furniture/”><f:name>A f r i c a n C o f f e e Table</f:name><f:w idth>80</f:w idth><f: l e n g t h>120</f: l e n g t h>
</f: t a b l e></ r o o t>
28 / 102
IntroductionXML
DescriptionTraitements
Definition d’un document XMLDocument bien formeRegles de bonne conception
Espaces de nom
prefixes devant le nom des elements
espaces de nom pour definir les prefixes de l’element et de ses fils
syntaxe: xmlns:prefix=”URI”l’URI ne sert qu’a donner un nom unique a l’espace de nom
Document XML
<r o o t xmlns:h=”http://www.w3.org/TR/html4/”xmlns:f=”http://www.w3schools.com/furniture/>
<h: t a b l e><h: t r>
<h:td>A pp l es</h:td><h:td>Bananas</h:td>
</h: t r></h: t a b l e>
<f: t a b l e><f:name>A f r i c a n C o f f e e Table</f:name><f:w idth>80</f:w idth><f: l e n g t h>120</f: l e n g t h>
</f: t a b l e></ r o o t>
28 / 102
IntroductionXML
DescriptionTraitements
Definition d’un document XMLDocument bien formeRegles de bonne conception
Deux niveaux de validation
1 document bien forme ?
le document correspond-il a une structure d’arbre ?
2 document valide ?
le document correspond-il a un dialecte XML specifique ?
29 / 102
IntroductionXML
DescriptionTraitements
Definition d’un document XMLDocument bien formeRegles de bonne conception
1 IntroductionXML, pour quoi faire ?HistoriqueStandards
2 Langage de description de donnees : XMLDefinition d’un document XMLDocument bien formeRegles de bonne conception
3 Description de documentsDescription structurelle de documentsDescription typee de documents
4 Traitement des documentsInterfaces de programmation : SAX et DOMSelection d’informations : XPathTransformation d’un document
30 / 102
IntroductionXML
DescriptionTraitements
Definition d’un document XMLDocument bien formeRegles de bonne conception
Documents XML bien formes
Un document XML bien forme respecte la syntaxe XML.
Document bien forme
une racine unique
au moins un element
presence de balise fermante
identite balise ouvrante et fermante, y compris la casse
imbrication ”correcte”
les valeurs des attributs doivent etre entre guillemets
Attention : avec XML, erreurs non permises (6= HTML)Verification : navigateur ou programme specifique
31 / 102
IntroductionXML
DescriptionTraitements
Definition d’un document XMLDocument bien formeRegles de bonne conception
Exemple de document mal forme
<p e r s o n n e><nom>C . Dubois</nom><bureau s i t e=” ENSIIE−Evry ”>
<n o p i e c e>110</ n o p i e c e><n o t e l>01 69 36 73 40</ n o t e l>
</ p e r s o n n e><p e r s o n n e>
<nom>B . Grau</Nom><bureau s i t e=” ENSIIE−Evry ”>
<n o p i e c e>104</ n o p i e c e><n o t e l>01 69 36 73 44</ n o t e l>
</ bureau></ p e r s o n n e>
(3 erreurs. tester avec xmllint annuaire ensiie.xml)
32 / 102
IntroductionXML
DescriptionTraitements
Definition d’un document XMLDocument bien formeRegles de bonne conception
1 IntroductionXML, pour quoi faire ?HistoriqueStandards
2 Langage de description de donnees : XMLDefinition d’un document XMLDocument bien formeRegles de bonne conception
3 Description de documentsDescription structurelle de documentsDescription typee de documents
4 Traitement des documentsInterfaces de programmation : SAX et DOMSelection d’informations : XPathTransformation d’un document
33 / 102
IntroductionXML
DescriptionTraitements
Definition d’un document XMLDocument bien formeRegles de bonne conception
Regles de “bonne conception” de documents XML
Marquage metatypographique
ex : <p>eviter d’imposer une methode particuliere pour la<em>mise en valeur</em> de texte</p>
<tableau><ligne><cel>2000</cel><cel>2001</cel><cel>2002</cel> </ligne><ligne><cel>67.8</cel><cel>89</cel><cel>91.4</cel></ligne></tableau>
34 / 102
IntroductionXML
DescriptionTraitements
Definition d’un document XMLDocument bien formeRegles de bonne conception
Regles de “bonne conception” de documents XML
Marquage semantique
marquer toutes les unites qui ont une semantique definie dansl’univers du discours
Bonne utilisation des attributs
les valeurs des attributs sont plutot des parametres utilises par lesapplications qui traitent le contenu des elements
valeurs d’attributs non structurees
attributs non ordonnes
35 / 102
IntroductionXML
DescriptionTraitements
DTDSchemas
1 IntroductionXML, pour quoi faire ?HistoriqueStandards
2 Langage de description de donnees : XMLDefinition d’un document XMLDocument bien formeRegles de bonne conception
3 Description de documentsDescription structurelle de documentsDescription typee de documents
4 Traitement des documentsInterfaces de programmation : SAX et DOMSelection d’informations : XPathTransformation d’un document
36 / 102
IntroductionXML
DescriptionTraitements
DTDSchemas
Meta-description de documents
Definir des modeles, des classes de documents ou definir un documentvalide
DTD (Document Type Definition)
Herite de SGML, oriente description de la structure des documentsContraintes sur le type des informations tres pauvres
Schema (XSD pour XML Schema Definition)
Oriente echange de donneesSysteme tres evolue avec typage fortSyntaxe XML
37 / 102
IntroductionXML
DescriptionTraitements
DTDSchemas
1 IntroductionXML, pour quoi faire ?HistoriqueStandards
2 Langage de description de donnees : XMLDefinition d’un document XMLDocument bien formeRegles de bonne conception
3 Description de documentsDescription structurelle de documentsDescription typee de documents
4 Traitement des documentsInterfaces de programmation : SAX et DOMSelection d’informations : XPathTransformation d’un document
38 / 102
IntroductionXML
DescriptionTraitements
DTDSchemas
DTD
Presentation
Document Type Definition
fait partie de la recommandation XML
decrit la structure du fichier XML
declaration des elementsliste des attributs
→ validation structurelle du document
39 / 102
IntroductionXML
DescriptionTraitements
DTDSchemas
Exemple de document XML
<? xml v e r s i o n=” 1 . 0 ” e n c o d i n g=”UTF−8”?><g u i d e c i n e><!−− e x t r a i t d ’ un gu ide , par a r r o n d i s s e m e n t , des f i l m s a P a r i s −−>
<t i t r e>Guide c i n ema de P a r i s</ t i t r e><semaine>16 mars 2011 au 22 mars 2011</ semaine><a r r o n d i s s e m e n t>
<t i t r e a r r>5 eme a r r o n d i s s e m e n t</ t i t r e a r r><cinema>
<nom>Le Q u a r t i e r L a t i n</nom><a d r e s s e>
<r u e>9 , r u e Champo l l i on</ r u e><metro nom=” Cluny ”/>
</ a d r e s s e><s e a n c e h e u r e=” 1 8 . 0 0 ” r e f f i l m=” s l e e p y h o l l o w ”/><s e a n c e h e u r e=” 2 0 . 0 0 ” r e f f i l m=” e d w a r d s c i s s o r h a n d s ”/>
</ cinema><f i l m f i l m i d=” s l e e p y h o l l o w ”>
<t i t r e>S l e e p y Hol low</ t i t r e><r e a l i s a t e u r r e a l i d= ’ t i m b u r t o n ’>
<nom>Tim Burton</nom></ r e a l i s a t e u r><a c t e u r s>
<comedien>Johnny Depp</ comedien><comedienne>C r i s t i n a R i c c i</ comedienne>
</ a c t e u r s></ f i l m><f i l m f i l m i d=” e d w a r d s c i s s o r h a n d s ” r e f r e a l=” t i m b u r t o n ” >
<t i t r e>Edward S c i s s o r h a n d s</ t i t r e><a c t e u r s><comedien>Johnny Depp</ comedien></ a c t e u r s>
</ f i l m></ a r r o n d i s s e m e n t>
</ g u i d e c i n e>
40 / 102
IntroductionXML
DescriptionTraitements
DTDSchemas
Exemple de DTD
Definitions pour le guide cinema<!−− d e f i n i t i o n des e l e ments , des a t t r i b u t s des documents de t y p e ‘ ‘
g u i d e c i n e ’ ’ −−><!ELEMENT g u i d e c i n e ( t i t r e , semaine , a r r o n d i s s e m e n t +)><!ELEMENT t i t r e (#PCDATA)><!ELEMENT semaine (#PCDATA)><!ELEMENT a r r o n d i s s e m e n t ( t i t r e a r r , ( c inema , f i l m ∗) ∗)><!ELEMENT t i t r e a r r (#PCDATA)><!ELEMENT cinema (nom , a d r e s s e , ( s e a n c e ) ∗)><!ELEMENT nom (#PCDATA)><!ELEMENT a d r e s s e ( rue , metro )><!ELEMENT r u e (#PCDATA)><!ELEMENT metro EMPTY><! ATTLIST metro nom ( S t M i c h e l | Cluny | J u s s i e u ) ” Inconnu ”><!ELEMENT s e a n c e EMPTY><! ATTLIST s e a n c e h e u r e NMTOKEN #REQUIRED
r e f f i l m IDREF #REQUIRED><!ELEMENT f i l m ( t i t r e , r e a l i s a t e u r ∗ , a c t e u r s )><! ATTLIST f i l m f i l m i d ID #REQUIRED
r e f r e a l IDREFS #IMPLIED><!ELEMENT a c t e u r s ( comedien | comedienne )∗><!ELEMENT comedien (#PCDATA)><!ELEMENT comedienne (#PCDATA)><!ELEMENT r e a l i s a t e u r (nom , ( f i l m ) ∗)><! ATTLIST r e a l i s a t e u r r e a l i d ID #REQUIRED>
41 / 102
IntroductionXML
DescriptionTraitements
DTDSchemas
Composition d’un document XML
Dans une DTD, un document XML est vu comme un ensemble de:
elements
attributs
entites: reference
entites predefinies en XML
< <> >& &" ”' ’
PCDATA (parsed character data): chaıne de caracteres analysee parun outil
CDATA: chaıne de caracteres non analysee par un outil
42 / 102
IntroductionXML
DescriptionTraitements
DTDSchemas
Definition des elementsDeclaration du type
Syntaxe : <!ELEMENT nom element modele de contenu>
nom element : unique dans une DTD
modele de contenu
EMPTY : element vide→ <!ELEMENT metro EMPTY>
<metro nom=”Cluny”/>#PCDATA : texte analysable
→ <!ELEMENT titre (#PCDATA) ><titre>Sleepy Hollow</titre>ANY : contenu libre, toute combinaison de tous les elements
→ <!ELEMENT section ANY ><section> Nouvelle section avec <chapitre/> </section>compose d’elements fils ou #PCDATA : grammaire definissant lastructure
→ <!ELEMENT adresse (rue, metro)><adresse><rue>9, rue Champollion</rue><metronom=”Cluny”/></adresse>
43 / 102
IntroductionXML
DescriptionTraitements
DTDSchemas
Element compose d’elements fils
Expressions regulieres sur l’alphabet des noms d’elements
name ? : l’element peut apparaıtre 0 ou 1 fois
name * : l’element peut apparaıtre 0, 1 ou plusieurs fois
name + : l’element peut apparaıtre 1 ou plusieurs fois
name : l’element doit apparaıtre une fois
(name1, name2) : succession
(name1 | name2) : apparition dans un ordre quelconque
Exemples
<!ELEMENT f i l m ( t i t r e , r e a l i s a t e u r +, a c t e u r s )><!ELEMENT a c t e u r s ( come d i e n | come d i e n n e ) ∗>
44 / 102
IntroductionXML
DescriptionTraitements
DTDSchemas
Modele mixte
Melange de texte et d’elements
<!ELEMENT p(#PCDATA | em | e x p o s a n t | i n d i c e | r e n v o i )∗><!ELEMENT em (#PCDATA | e x p o s a n t | i n d i c e )∗><!ELEMENT e x p o s a n t (#PCDATA)><!ELEMENT i n d i c e (#PCDATA)>
Exemple de document v a l i d e<p> On remarquera que <em> x=a <e x p o s a n t>( y+z ) </ e x p o s a n t> </em>e s t
t o u j o u r s p o s i t i f</p>
45 / 102
IntroductionXML
DescriptionTraitements
DTDSchemas
Declaration des Attributs
ATTLIST
Syntaxe :<!ATTLIST nom element nom attribut type mode [defaut]>
nom element : element concerne
puis pour chaque attribut :
nom attribut : nom de l’attribut, unique dans le contexte del’elementtype : cf transparent suivantmode et defaut
#REQUIRED : la valeur est obligatoire#IMPLIED : la valeur est optionnelle#FIXED valeur: la valeur est fixee dans la DTD et non modifiablevaleur : si une autre valeur n’est pas definie
46 / 102
IntroductionXML
DescriptionTraitements
DTDSchemas
Types des Attributs
Types possibles
CDATA : chaıne de caracteres
liste de valeurs alternatives (separees par |)<!ATTLIST metro nom (StMichel|Cluny|Jussieu) ”Inconnu”>
ID : identificateur d’element<!ATTLIST film film id ID #REQUIRED>
IDREF, IDREFS : reference de valeur d’identificateur d’element(eventuellement liste separee par espaces)<!ATTLIST seance ref film IDREF #REQUIRED><!ATTLIST film ref real IDREFS #IMPLIED>
entites externes (non analysees : fichiers, CGI, HTML, gif,...)<!ATTLIST Films intro ENTITY #REQUIRED><!ENTITY intro SYSTEM “http://www.films.com/INTRO.html”>
NMTOKEN, NMTOKENS : token XML, chaıne de caracteressans blancs
47 / 102
IntroductionXML
DescriptionTraitements
DTDSchemas
DTD : utilisation
Clause DOCTYPE ajoutee au debut du fichier XML
Definition locale
<? xml v e r s i o n=” 1 . 0 ” e n c o d i n g=”UTF−8”?><!DOCTYPE g u i d e c i n e [
<!ELEMENT g u i d e c i n e ( t i t r e , semaine , a r r o n d i s s e m e n t +)><!ELEMENT t i t r e (#PCDATA)> . . .
]><g u i d e c i n e>
< t i t r e>Guide c i n ema de P a r i s</ t i t r e> . . .
Definition externe
<? xml v e r s i o n=” 1 . 0 ” e n c o d i n g=”UTF−8”?><!DOCTYPE g u i d e c i n e SYSTEM ” g u i d e c i n e . dtd ”><g u i d e c i n e>
< t i t r e>Guide c i n ema de P a r i s</ t i t r e> . . .
et dans guide cine.dtd:
<!ELEMENT g u i d e c i n e ( t i t r e , semaine , a r r o n d i s s e m e n t +)><!ELEMENT t i t r e (#PCDATA)> . . .
→ a privilegier: extensibilite, reutilisation48 / 102
IntroductionXML
DescriptionTraitements
DTDSchemas
Validite d’un document
Document XML valide
la DTD existe
le document XML respecte la DTD
grammaire, element racine, specification des elements et des attributs
integrite referentielle respectee
toutes les valeurs d’attribut ID sont distinctestoutes les references (valeurs des attributs IDREF) sont valides : onne peut pas referencer un element qui n’existe pas dans le document
49 / 102
IntroductionXML
DescriptionTraitements
DTDSchemas
Exemple d’un document XML non valide mais bien forme
<g u i d e c i n e>Ce document c o n t i e n t des i n f o r m a t i o n s s u r l e s f i l m s<cinema>
<a d r e s s e>< v i l l e nom=” Toulouse ”/><r u e>9 , r u e Champo l l i on</ r u e>
</ a d r e s s e><nom>Le Q u a r t i e r L a t i n</nom><s e a n c e h e u r e = ” 1 8 . 0 0 ” r e f f i l m = ”batman”/><s e a n c e h e u r e = ” 2 0 . 0 0 ”/>
</ cinema><f i l m f i l m I D = ” s l e e p y h o l l o w ”>
< t i t r e>S l e e p y Hol low</ t i t r e>< t i t r e>Une h i s t o i r e f a n t a s t i q u e</ t i t r e>< r e a l i s a t e u r r e a l I D = ” t i m b u r t o n ”>
<nom>Tim Burton</nom></ r e a l i s a t e u r><a c t e u r s>
<comedienne>Miranda R i c h a r d s o n</ comedienne><comedien>Johnny Depp</ comedien><comedienne>C r i s t i n a R i c c i</ comedienne>
</ a c t e u r s></ f i l m>
</ g u i d e c i n e>
(6 erreurs. tester avec xmllint guide cine.xml –noout –dtdvalidguide cine non valide.dtd)
50 / 102
IntroductionXML
DescriptionTraitements
DTDSchemas
1 IntroductionXML, pour quoi faire ?HistoriqueStandards
2 Langage de description de donnees : XMLDefinition d’un document XMLDocument bien formeRegles de bonne conception
3 Description de documentsDescription structurelle de documentsDescription typee de documents
4 Traitement des documentsInterfaces de programmation : SAX et DOMSelection d’informations : XPathTransformation d’un document
51 / 102
IntroductionXML
DescriptionTraitements
DTDSchemas
Schema XML
Presentation
description de la structure et contraintes sur le contenu d’undocument XML
recommandation W3C depuis 2001, version 1.0 en 2004, version 1.1en cours (2009 phase finale)
W3.org/TR/xmlschema-0W3.org/TR/xmlschema-1W3.org/TR/xmlschema-2
Espace de noms associe a XML Schema :www.w3.org/2001/XMLSchema (prefixe xsd dans la suite de cedocument)
52 / 102
IntroductionXML
DescriptionTraitements
DTDSchemas
Motivation
Exemple de document
<? xml v e r s i o n=” 1 . 0 ” ?><meteo>
<obs num=”PY54476VZ32”>< l o c>P a r i s−M o n t s o u r i s</ l o c><d a t e>1998−10−22 T15:31 :05</ d a t e><temp u n i t=” c e l s i u s ”>1 2 . 3</temp><hygro>88</ hygro><anemo>3</anemo><p l u v i o>6</ p l u v i o>
</ obs><obs num=”BM655S55”>
< l o c>Pic−du−Midi−B i g o r r e</ l o c><d a t e>1998−10−22 T15:31 :30</ d a t e><temp u n i t=” c e l s i u s ”>3 . 2</temp><hygro>55</ hygro><anemo>48</anemo><p l u v i o>0</ p l u v i o><message>Anemo . p r i m a i r e HS</ message>
</ obs></ meteo>
Exemple de DTD associee
<!ELEMENT meteo ( obs )+><!ELEMENT obs ( l o c , date , temp ? ,
hygro ? , n e b u l o ? , anemo ? ,p l u v i o ? , message ?)>
<! ATTLIST obs num ID #REQUIRED><!ELEMENT l o c (#PCDATA)><!ELEMENT d a t e (#PCDATA)><!ELEMENT temp (#PCDATA)><! ATTLIST temp u n i t CDATA #
REQUIRED><!ELEMENT hygro (#PCDATA)><!ELEMENT n e b u l o (#PCDATA)><!ELEMENT anemo (#PCDATA)><!ELEMENT p l u v i o (#PCDATA)><!ELEMENT message (#PCDATA)>
⇒ Tres peu de contraintes, notamment sur les types de donnees[XML, langage et applications, Alain Michard, Eyrolles 2001] 53 / 102
IntroductionXML
DescriptionTraitements
DTDSchemas
Schema
Definition
Element schema = racine de tout schema XML
<xsd : schema x m l n s : x s d=” h t t p : //www. w3 . org /2001/XMLSchema”>contenu
</ xsd : schema>
Les elements et types viennent de ce namespace; ces donnees seront prefixees par ”xsd”
Contenu
Definitions :
d’elements
de types d’elements
simplescomplexes
d’attributs
d’annotations et documentation
54 / 102
IntroductionXML
DescriptionTraitements
DTDSchemas
Elements simples vs complexes
Element simple
ne contient pas d’autre element ni d’attributs
Element complexe
contient autres elements et/ou attributs
55 / 102
IntroductionXML
DescriptionTraitements
DTDSchemas
Definition d’element simple
<x s d : e l e m e n t name=” nomElement ” t y p e=” t y p e S i m p l e ” />
Exemples d’elements simples
<x s d : e l e m e n t name=” r u e ” t y p e=” x s d : s t r i n g ” />
<x s d : e l e m e n t name=” v i l l e ” t y p e=” x s d : s t r i n g ” />
<x s d : e l e m e n t name=” c o d e P o s t a l ” t y p e=” x s d : d e c i m a l ” />
Valeur par defaut
<x s : e l e m e n t name=” c o u l e u r ” t y p e=” x s : s t r i n g ” d e f a u l t=” rouge ”/>
Valeur fixee
<x s : e l e m e n t name=” c o u l e u r ” t y p e=” x s : s t r i n g ” f i x e d=” rouge ”/>
56 / 102
IntroductionXML
DescriptionTraitements
DTDSchemas
Types simples
Elements et attributs peuvent avoir un contenu simple :
43 types predefinis atomiques
57 / 102
IntroductionXML
DescriptionTraitements
DTDSchemas
Restrictions/facettes
Restrictions
Les restrictions permettent de definir les valeurs que peut prendre unelement (ou un attribut); elles sont appelees facettes.
Restriction a un intervalle de valeurs
<x s d : s i m p l e T y p e name=” c o d e P r o d u i t ”><x s d : r e s t r i c t i o n base=” x s d : i n t e g e r ”>
<x s d : m i n I n c l u s i v e v a l u e=” 100 ”/><x s d : m a x I n c l u s i v e v a l u e=” 1000 ”/>
</ x s d : r e s t r i c t i o n></ x s d : s i m p l e T y p e>
Restriction a un ensemble de valeurs
<x s d : s i m p l e T y p e name=” v o i x ”><x s d : r e s t r i c t i o n base=” x s d : s t r i n g ”>
<x s d : e n u m e r a t i o n v a l u e=” s o p r a n o ”/><x s d : e n u m e r a t i o n v a l u e=” a l t o ”/><x s d : e n u m e r a t i o n v a l u e=” t e n o r ”/><x s d : e n u m e r a t i o n v a l u e=” b a s s e ”/>
</ x s d : r e s t r i c t i o n></ x s d : s i m p l e T y p e>
58 / 102
IntroductionXML
DescriptionTraitements
DTDSchemas
Restrictions/facettes (suite)
Restriction par expression reguliere
<x s d : s i m p l e T y p e name=” c o d e P o s t a l ”><x s d : r e s t r i c t i o n base=” x s d : s t r i n g ”>
<x s d : p a t t e r n v a l u e=”\d{5}” /></ x s d : r e s t r i c t i o n>
</ x s d : s i m p l e T y p e>
Facettes
enumeration, fractionDigits, length, maxExclusive, maxInclusive,maxLength, minExclusive, minInclusive, minLength, pattern, totalDigits,whiteSpace
59 / 102
IntroductionXML
DescriptionTraitements
DTDSchemas
Definition d’elements complexes
Types d’elements complexes
elements vides
elements qui contiennent uniquement d’autres elements
elements qui ne contiennent que du texte (mais avec attributs)
elements qui contiennent a la fois d’autres elements et du texte
60 / 102
IntroductionXML
DescriptionTraitements
DTDSchemas
Definition d’elements complexes
Premiere methode : definition d’un type dans l’element
<x s : e l e m e n t name=” employ e ”><xs :complexType>
<x s : s e q u e n c e><x s : e l e m e n t name=” pr enom” t y p e=” x s : s t r i n g ”/><x s : e l e m e n t name=” n o m f a m i l l e ” t y p e=” x s : s t r i n g ”/>
</ x s : s e q u e n c e></ xs :complexType>
</ x s : e l e m e n t>
⇒ seul l’element employe peut utiliser le type complexe forme d’unprenom et d’un nomfamille
61 / 102
IntroductionXML
DescriptionTraitements
DTDSchemas
Definition d’elements complexes
Deuxieme methode : definition d’un type et d’un element
<x s : e l e m e n t name=” employ e ” t y p e=” i n f o p e r s o n n e ”/>
<xs :complexType name=” i n f o p e r s o n n e ”><x s : s e q u e n c e>
<x s : e l e m e n t name=” pr enom” t y p e=” x s : s t r i n g ”/><x s : e l e m e n t name=” n o m f a m i l l e ” t y p e=” x s : s t r i n g ”/>
</ x s : s e q u e n c e></ xs :complexType>
⇒ possibilite de definir d’autres elements ayant ce meme type, comme
<x s : e l e m e n t name=” e t u d i a n t ” t y p e=” i n f o p e r s o n n e ”/>
62 / 102
IntroductionXML
DescriptionTraitements
DTDSchemas
Definition d’elements complexes : exemples (1)
Element vide
<me t r o nom=” Cluny ” />
⇒<x s : e l e m e n t name=”me t r o ”>
<xs :complexType><x s : a t t r i b u t e name=”name” t y p e=” x s : s t r i n g ”/>
</ xs :complexType></ x s : e l e m e n t>
63 / 102
IntroductionXML
DescriptionTraitements
DTDSchemas
Definition d’elements complexes : exemples (2)
Element ne contenant que d’autres elements
<p e r s o n n e><pr enom>Jean</ pr enom><nom>Dupond</nom>
</ p e r s o n n e>
⇒<x s : e l e m e n t name=” p e r s o n n e ” t y p e=” i n f o p e r s o n n e ”/>
<xs :complexType name=” i n f o p e r s o n n e ”><x s : s e q u e n c e>
<x s : e l e m e n t name=” pr enom” t y p e=” x s : s t r i n g ”/><x s : e l e m e n t name=” n o m f a m i l l e ” t y p e=” x s : s t r i n g ”/>
</ x s : s e q u e n c e></ xs :complexType>
64 / 102
IntroductionXML
DescriptionTraitements
DTDSchemas
Definition d’elements complexes : exemples (3)
Element ne contenant que du texte (avec attribut)
<p o i n t u r e pays=” f r a n c e ”>39</ p o i n t u r e>
⇒<x s : e l e m e n t name=” p o i n t u r e ” t y p e=” p o i n t u r e ”/>
<xs :complexType name=” p o i n t u r e ”><x s : s i m p l e C o n t e n t>
<x s : e x t e n s i o n base=” x s : i n t e g e r ”><x s : a t t r i b u t e name=” pays ” t y p e=” x s : s t r i n g ” />
</ x s : e x t e n s i o n></ x s : s i m p l e C o n t e n t>
</ xs :complexType>
simpleContent car le type ne contient que du contenu simple (pasd’autres elements)⇒ definition d’une extension ou d’une restriction obligatoire
65 / 102
IntroductionXML
DescriptionTraitements
DTDSchemas
Definition d’elements complexes : exemples (4)
Element avec contenu mixte
<e n t e t e>
A < l o c>P a r i s</ l o c> , l e <d a t e>26/02/2013</ d a t e>
A l ’ a t t e n t i o n de M. <nom>Durand</nom></e n t e t e>
⇒<x s : e l e m e n t name=” e n t e t e ” t y p e=” t y p e e n t e t e ”/>
<xs :complexType name=” t y p e e n t e t e ” mixed=” t r u e ”><x s : s e q u e n c e>
<x s : e l e m e n t name=” l o c ” t y p e=” x s : s t r i n g ”/><x s : e l e m e n t name=” d a t e ” t y p e=” x s : d a t e ”/><x s : e l e m e n t name=”nom” t y p e=” x s : s t r i n g ”/>
</ x s : s e q u e n c e></ xs :complexType>
mixed=”true” pour permettre le texte entre les elements fils de l’en-tete66 / 102
IntroductionXML
DescriptionTraitements
DTDSchemas
Indicateurs
Indicateurs de nombre d’occurrences
Par defaut, les elements apparaissent une fois.Sinon, minOccurs et maxOccurs
Exemple
<x s d : e l e m e n t name =” i d e n t i f i c a t i o n ” t y p e=” a d r e s s e ” /><xsd :complexType name =” a d r e s s e ”>
<x s d : s e q u e n c e><x s d : e l e m e n t name=”nom” t y p e=” x s d : s t r i n g ” /><x s d : e l e m e n t name=” r u e ” t y p e=” x s d : s t r i n g ” /><x s d : e l e m e n t name=” v i l l e ” t y p e=” x s d : s t r i n g ” /><x s d : e l e m e n t name=” c o d e P o s t a l ” t y p e=” x s d : d e c i m a l ” /><!−− t e l e phone p o r t a b l e , f i x e , bureau −−><x s d : e l e m e n t name=” noTel ” t y p e=” x s d : d e c i m a l ” m i n o c c u r s=”0”
maxoccurs=”3” /></ x s d : s e q u e n c e>
</ xsd :complexType>
67 / 102
IntroductionXML
DescriptionTraitements
DTDSchemas
Indicateurs
Indicateurs d’ordre
sequence : les elements apparaissent dans un ordre specifique
choice : choix entre les elements
<x s d : e l e m e n t name=” p e r s o n n e ”><xsd :complexType>
<x s d : c h o i c e><x s d : e l e m e n t name=” employ e ” t y p e=” employ e ”/><x s d : e l e m e n t name=”membre” t y p e=”membre”/>
</ x s d : c h o i c e></ xsd :complexType>
</ x s d : e l e m e n t>
all : chaque element apparaıt 0 ou 1 fois
<x s d : e l e m e n t name=” p e r s o n n e ”><xsd :complexType>
<x s d : a l l><x s d : e l e m e n t name=” pr enom” t y p e=” x s d : s t r i n g ”/><x s d : e l e m e n t name=” n o m f a m i l l e ” t y p e=” x s d : s t r i n g ”/>
</ x s d : a l l></ xsd :complexType>
</ x s d : e l e m e n t>
68 / 102
IntroductionXML
DescriptionTraitements
DTDSchemas
Definition d’attributs
<x s d : a t t r i b u t e name=” n omA tt r ibu t ” t y p e=” t y p e S i m p l e ”use=” r e q u i r e d | o p t i o n a l | f i x e d | d e f a u l t ” v a l u e=” v a l e u r ”/>
Exemple
<x s d : e l e m e n t name =” i d e n t i f i c a t i o n ” t y p e=” a d r e s s e ” /><xsd :complexType name =” a d r e s s e ”>
<x s d : s e q u e n c e><x s d : e l e m e n t name=”nom” t y p e=” x s d : s t r i n g ” /><x s d : e l e m e n t name=” r u e ” t y p e=” x s d : s t r i n g ” /><x s d : e l e m e n t name=” v i l l e ” t y p e=” x s d : s t r i n g ” /><x s d : e l e m e n t name=” c o d e P o s t a l ” t y p e=” x s d : d e c i m a l ” /><x s d : e l e m e n t name=” noTel ” t y p e=” x s d : d e c i m a l ” m i n o c c u r s=”0”
maxoccurs=”3” /></ x s d : s e q u e n c e><x s d : a t t r i b u t e name=” pays ” t y p e=” x s d : s t r i n g ” use=” f i x e d ” v a l u e=”
France ” /></ xsd :complexType>
69 / 102
IntroductionXML
DescriptionTraitements
DTDSchemas
Extension de types simples ou complexes (1)
Extension
Permet d’ajouter des attributs ou des elements a un type existant
Ajout d’attributs
<x s : s i m p l e T y p e name=” s i z e ”><x s : r e s t r i c t i o n base=” x s : s t r i n g ”>
<x s : e n u m e r a t i o n v a l u e=” s m a l l ” /><x s : e n u m e r a t i o n v a l u e=”medium” /><x s : e n u m e r a t i o n v a l u e=” l a r g e ” />
</ x s : r e s t r i c t i o n></ x s : s i m p l e T y p e>
<xs :complexType name=” j e a n s ”><x s : s i m p l e C o n t e n t>
<x s : e x t e n s i o n base=” s i z e ”><x s : a t t r i b u t e name=” h f ”>
<x s : s i m p l e T y p e><x s : r e s t r i c t i o n base=” x s : s t r i n g ”>
<x s : e n u m e r a t i o n v a l u e=” male ” /><x s : e n u m e r a t i o n v a l u e=” f e m a l e ” />
</ x s : r e s t r i c t i o n></ x s : s i m p l e T y p e>
</ x s : a t t r i b u t e></ x s : e x t e n s i o n>
</ x s : s i m p l e C o n t e n t></ xs :complexType>
70 / 102
IntroductionXML
DescriptionTraitements
DTDSchemas
Extension de types simples ou complexes (2)
Ajout d’elements
<x s : e l e m e n t name=” employ e ” t y p e=” i n f o p e r s o n n e c o m p l e t e ”/>
<xs :complexType name=” i n f o p e r s o n n e ”><x s : s e q u e n c e>
<x s : e l e m e n t name=” pr enom” t y p e=” x s : s t r i n g ”/><x s : e l e m e n t name=” n o m f a m i l l e ” t y p e=” x s : s t r i n g ”/>
</ x s : s e q u e n c e></ xs :complexType>
<xs :complexType name=” i n f o p e r s o n n e c o m p l e t e ”><x s : c o m p l e x C o n t e n t>
<x s : e x t e n s i o n base=” i n f o p e r s o n n e ”><x s : s e q u e n c e>
<x s : e l e m e n t name=” a d r e s s e ” t y p e=” x s : s t r i n g ”/><x s : e l e m e n t name=” v i l l e ” t y p e=” x s : s t r i n g ”/><x s : e l e m e n t name=” pays ” t y p e=” x s : s t r i n g ”/>
</ x s : s e q u e n c e></ x s : e x t e n s i o n>
</ x s : c o m p l e x C o n t e n t></ xs :complexType>
71 / 102
IntroductionXML
DescriptionTraitements
DTDSchemas
Exemple
<? xml v e r s i o n=” 1 . 0 ” e n c o d i n g=”UTF−8” ?><x s : s c h e m a x m l n s : x s=” h t t p : //www. w3 . org /2001/XMLSchema”>
<x s : a n n o t a t i o n><x s : d o c u m e n t a t i o n>Exemple de sch ema pour r e l e v e me t e o</ x s : d o c u m e n t a t i o n>
</ x s : a n n o t a t i o n>
<x s : e l e m e n t name=” meteo ” t y p e=” meteoType ” />
<xs :complexType name =” meteoType ” ><x s : s e q u e n c e>
<x s : e l e m e n t name=” obs ” t y p e=” o b s e r v a t i o n ” minOccurs=”1” maxOccurs=” unbounded ” /></ x s : s e q u e n c e>
</ xs :complexType>
<xs :complexType name=” o b s e r v a t i o n ”><x s : s e q u e n c e>
<x s : e l e m e n t name=” l o c ” t y p e=” x s : s t r i n g ” /><x s : e l e m e n t name=” d a t e ” t y p e=” x s : d a t e T i m e ” /><x s : e l e m e n t name=”temp” t y p e=”tempType” minOccurs=”0” maxOccurs=”1” /><x s : e l e m e n t name=” hygro ” t y p e=” p o u r c e n t ” minOccurs=”0” maxOccurs=”1” /><x s : e l e m e n t name=”anemo” t y p e=” x s : n o n N e g a t i v e I n t e g e r ” minOccurs=”0” maxOccurs=”1” /><x s : e l e m e n t name=” p l u v i o ” t y p e=” x s : n o n N e g a t i v e I n t e g e r ” minOccurs=”0” maxOccurs=”1” /><x s : e l e m e n t name=” n e b u l o ” t y p e=” o c t a l ” minOccurs=”0” maxOccurs=”1” /><x s : e l e m e n t name=” message ” t y p e =” x s : s t r i n g ” minOccurs=”0” maxOccurs=”1” />
</ x s : s e q u e n c e><x s : a t t r i b u t e name=”num” t y p e=” x s : s t r i n g ” use=” r e q u i r e d ” />
</ xs :complexType>
<x s : s i m p l e T y p e name=” o c t a l ”><x s : r e s t r i c t i o n base=” x s : n o n N e g a t i v e I n t e g e r ”>
<x s : m a x I n c l u s i v e v a l u e=”7” /></ x s : r e s t r i c t i o n>
</ x s : s i m p l e T y p e>72 / 102
IntroductionXML
DescriptionTraitements
DTDSchemas
Exemple (suite)
<x s : s i m p l e T y p e name=” p o u r c e n t ”><x s : r e s t r i c t i o n base=” x s : n o n N e g a t i v e I n t e g e r ”>
<x s : m a x I n c l u s i v e v a l u e=” 100 ” /></ x s : r e s t r i c t i o n>
</ x s : s i m p l e T y p e>
<x s : s i m p l e T y p e name=” v a l e u r s t e m p ”><x s : r e s t r i c t i o n base=” x s : d e c i m a l ”>
<x s : m i n I n c l u s i v e v a l u e=”−50.0”/><x s : m a x I n c l u s i v e v a l u e=” +50.0 ”/>
</ x s : r e s t r i c t i o n></ x s : s i m p l e T y p e>
<xs :complexType name =”tempType”><x s : s i m p l e C o n t e n t>
<x s : e x t e n s i o n base=” v a l e u r s t e m p ”><x s : a t t r i b u t e name=” u n i t ” t y p e=” tempUnit ” use=” r e q u i r e d ” />
</ x s : e x t e n s i o n></ x s : s i m p l e C o n t e n t>
</ xs :complexType>
<x s : s i m p l e T y p e name=” tempUnit ”><x s : r e s t r i c t i o n base=” x s : s t r i n g ”>
<x s : e n u m e r a t i o n v a l u e=” c e l s i u s ” /><x s : e n u m e r a t i o n v a l u e=” k e l v i n s ” /><x s : e n u m e r a t i o n v a l u e=” f a r e n h e i g h t ” />
</ x s : r e s t r i c t i o n></ x s : s i m p l e T y p e>
</ x s : s c h e m a>
[inspire de XML, langage et applications, Alain Michard, Eyrolles 2001]73 / 102
IntroductionXML
DescriptionTraitements
DTDSchemas
Integration au document XML
Exemple de document
<? xml v e r s i o n=” 1 . 0 ” ?><meteo x m l n s : x s i=” h t t p : //www. w3 . org /2001/XMLSchema−i n s t a n c e ”
xs i :noNamespaceSchemaLocat ion=” schemameteo . xsd ”><obs num=”PY54476VZ32”>
< l o c>P a r i s−M o n t s o u r i s</ l o c><d a t e>1998−10−22 T15:31 :05</ d a t e><temp u n i t=” c e l s i u s ”>1 2 . 3</temp><hygro>88</ hygro><anemo>3</anemo><p l u v i o>6</ p l u v i o>
</ obs>. . .</ meteo>
74 / 102
IntroductionXML
DescriptionTraitements
Programmation : SAX et DOMSelection d’informations : XPathTransformation : XSLT
1 IntroductionXML, pour quoi faire ?HistoriqueStandards
2 Langage de description de donnees : XMLDefinition d’un document XMLDocument bien formeRegles de bonne conception
3 Description de documentsDescription structurelle de documentsDescription typee de documents
4 Traitement des documentsInterfaces de programmation : SAX et DOMSelection d’informations : XPathTransformation d’un document
75 / 102
IntroductionXML
DescriptionTraitements
Programmation : SAX et DOMSelection d’informations : XPathTransformation : XSLT
1 IntroductionXML, pour quoi faire ?HistoriqueStandards
2 Langage de description de donnees : XMLDefinition d’un document XMLDocument bien formeRegles de bonne conception
3 Description de documentsDescription structurelle de documentsDescription typee de documents
4 Traitement des documentsInterfaces de programmation : SAX et DOMSelection d’informations : XPathTransformation d’un document
76 / 102
IntroductionXML
DescriptionTraitements
Programmation : SAX et DOMSelection d’informations : XPathTransformation : XSLT
API des analyseurs syntaxiques (parser) XML
DOM - analyseur ”hierarchique”
Document Object Model
recommandation W3C (level 1 en 1998, level 2 en 2000, level 3 en 2004)
construit l’arbre correspondant au document en memoire
, facilite les deplacements ou recherches dans l’arbre
/ tres lourd si document de taille importante
SAX - API evenementielle
Simple API for XML
originellement specifique au langage Java (1998), actuellement version 2.0 (2004)
parcourt le document et envoie des evenements (debut element, finelement, caracteres...)
, permet de traiter des documents de taille quelconque
/ pas de retour arriere possible
77 / 102
IntroductionXML
DescriptionTraitements
Programmation : SAX et DOMSelection d’informations : XPathTransformation : XSLT
Comparaison DOM/SAX
78 / 102
IntroductionXML
DescriptionTraitements
Programmation : SAX et DOMSelection d’informations : XPathTransformation : XSLT
DOM
interface pour acceder et modifier un document (contenu, structure,style) independante du langage
Proprietes
nodeName
nodeValue
parentNode
childNode
attributes
Methodes
getElementsByTagNames()
appendChild()
removeChild()
79 / 102
IntroductionXML
DescriptionTraitements
Programmation : SAX et DOMSelection d’informations : XPathTransformation : XSLT
Reprenons le fichier XML de la librairie
<?xml version=”1.0” encoding=”UTF-8”? ><!−− C a t a l o g u e d ’ une l i b r a i r i e −−>< l i b r a i r i e>
< l i v r e c a t e g o r i e=” e n f a n t s ”>< t i t r e l a n g u e=” en ”>
Harry P o t t e r</ t i t r e><a u t e u r>J K. Rowl ing</ a u t e u r><annee>2005</ annee><p r i x>29 ,99</ p r i x>
</ l i v r e>< l i v r e c a t e g o r i e=” programmation ”>
< t i t r e l a n g u e=” f r ”>A p p r e n t i s s a g e de l a programmation avec Ocaml
</ t i t r e><a u t e u r>C a t h e r i n e Dubois</ a u t e u r><annee>2004</ annee><p r i x>39 ,95</ p r i x>
</ l i v r e></ l i b r a i r i e>
80 / 102
IntroductionXML
DescriptionTraitements
Programmation : SAX et DOMSelection d’informations : XPathTransformation : XSLT
Representation DOM d’un document XML
Pour DOM, un document XML = un ensemble de nœuds
librairie
livre livre
categorie...
titre
langue Harry Potter
auteur
JK Rowling
annee
2005
prix
29,99
root
element
attribute
text
81 / 102
IntroductionXML
DescriptionTraitements
Programmation : SAX et DOMSelection d’informations : XPathTransformation : XSLT
DOM: acceder au titre du premier livre
<!DOCTYPE html><html><body><h1>Test XML JS</h1>
<p>T i t r e : <span i d=”demo”></ span></p>
<s c r i p t>v a r x h t t p = new XMLHttpRequest ( ) ;x h t t p . o n r e a d y s t a t e c h a n g e = f u n c t i o n ( ) {
i f ( t h i s . r e a d y S t a t e == 4 && t h i s . s t a t u s == 200) { // 4 = r e q u e s t f i n i s h e d and r e s p o n s e i sready , 200 = ”OK”
myFunction ( t h i s ) ;}
};
x h t t p . open ( ”GET” , ” books . xml ” , t r u e ) ;x h t t p . send ( ) ;
f u n c t i o n myFunction ( xml ) {v a r xmlDoc = xml . responseXML ;document . getE lementBy Id ( ”demo” ) . innerHTML = xmlDoc . getElementsByTagName ( ” t i t r e ” ) [ 0 ] .
c h i l d N o d e s [ 0 ] . nodeValue ; // <− ACCES AU PREMIER TITRE DU DOC XML}</s c r i p t>
</ body></ html>
Plus d’informations sur w3schools
82 / 102
IntroductionXML
DescriptionTraitements
Programmation : SAX et DOMSelection d’informations : XPathTransformation : XSLT
1 IntroductionXML, pour quoi faire ?HistoriqueStandards
2 Langage de description de donnees : XMLDefinition d’un document XMLDocument bien formeRegles de bonne conception
3 Description de documentsDescription structurelle de documentsDescription typee de documents
4 Traitement des documentsInterfaces de programmation : SAX et DOMSelection d’informations : XPathTransformation d’un document
83 / 102
IntroductionXML
DescriptionTraitements
Programmation : SAX et DOMSelection d’informations : XPathTransformation : XSLT
Selectionner des fragments XML : XPath
Presentation
XML Path Language
identifier un ensemble de nœuds dans un document XML
concu pour XSLT et Xpointer
XPath 1.0 recommandation W3C depuis 1999, XPath 2.0 depuis2007, XPath 3.0 depuis 2014
http://www.w3/org/TR/xpath
84 / 102
IntroductionXML
DescriptionTraitements
Programmation : SAX et DOMSelection d’informations : XPathTransformation : XSLT
Exemple
< f i l m s>Ce document c o n t i e n t des i n f o r m a t i o n s s u r l e s f i l m s<cinema>
<nom>R e f l e t s Me d i c i s</nom><a d r e s s e>
< v i l l e nom=P a r i s /><r u e>9 , r u e Champo l l i on</ r u e>
</ a d r e s s e><s e a n c e h e u r e = ” 1 8 . 0 0 ” r e f f i l m = ” s l e e p y h o l l o w ”/><s e a n c e h e u r e = ” 2 0 . 0 0 ” r e f f i l m = ” e d w a r d s c i s s o r h a n d s ”/>
</ cinema><f i l m f i l m I D = ” s l e e p y h o l l o w ”/>
< t i t r e>S l e e p y Hol low</ t i t r e>< r e a l i s a t e u r r e a l I D = ” t i m b u r t o n ”/>
<nom>Tim Burton</nom></ r e a l i s a t e u r><a c t e u r s>
<comedien>Johnny Depp</ comedien><comedienne>C r i s t i n a R i c c i</ comedienne>
</ a c t e u r s></ f i l m><f i l m f i l m I D = ” e d w a r d s c i s s o r h a n d s ” r e f r e a l = ” t i m b u r t o n ” />
< t i t r e>Edward S c i s s o r h a n d s</ t i t r e><a c t e u r s><comedien>Johnny Depp</ comedien> </ a c t e u r s>
</ f i l m></ f i l m s>
85 / 102
IntroductionXML
DescriptionTraitements
Programmation : SAX et DOMSelection d’informations : XPathTransformation : XSLT
XPath : chemins de positionnement (location path)
Chemin de positionnement
Un chemin de positionnement est une sequence d’etapes depositionnement (ou selecteurs) par rapport a un ensemble de nœudsdonnes (contexte)
Syntaxe : selecteur1/selecteur2/selecteur3 (forme relative)
/selecteur1/selecteur2/selecteur3 (forme absolue)
Selecteur
Chaque selecteur selectionne un ensemble de nœuds en fonction duselecteur precedent (= nouveau contexte)
Syntaxe : axe::test
Exemple : films/descendant::acteurs/child::comedien
86 / 102
IntroductionXML
DescriptionTraitements
Programmation : SAX et DOMSelection d’informations : XPathTransformation : XSLT
Axe
L’axe selectionne un ensemble de nœuds par rapport a leur positiondans un document ou relative a un contexte
Exemples
descendant::acteurs→ selectionne un ensemble de sous-nœuds de type acteurs dans le
documentchild::comedien
→ selectionne un ensemble de nœuds fils de type comedien par rapportau contexte defini par descendant::acteurs
87 / 102
IntroductionXML
DescriptionTraitements
Programmation : SAX et DOMSelection d’informations : XPathTransformation : XSLT
XPath : axes (directions)
Axes relatifs a un nœud
nœuds enfants et descendants : child,descendant, descendant-or-self
nœud parent et ancetres : parent, ancestor,ancestor-or-self
freres : preceding-sibling, following-sibling
nœuds precedents et suivants de la balise dansle document (sans les ascendants /descendants du nœud contexte) : preceding,following
attributs : attribute
self
88 / 102
IntroductionXML
DescriptionTraitements
Programmation : SAX et DOMSelection d’informations : XPathTransformation : XSLT
XPath : axes (directions)
Axes relatifs a un nœud
nœuds enfants et descendants : child,descendant, descendant-or-self
nœud parent et ancetres : parent, ancestor,ancestor-or-self
freres : preceding-sibling, following-sibling
nœuds precedents et suivants de la balise dansle document (sans les ascendants /descendants du nœud contexte) : preceding,following
attributs : attribute
self
88 / 102
IntroductionXML
DescriptionTraitements
Programmation : SAX et DOMSelection d’informations : XPathTransformation : XSLT
XPath : axes (directions)
Axes relatifs a un nœud
nœuds enfants et descendants : child,descendant, descendant-or-self
nœud parent et ancetres : parent, ancestor,ancestor-or-self
freres : preceding-sibling, following-sibling
nœuds precedents et suivants de la balise dansle document (sans les ascendants /descendants du nœud contexte) : preceding,following
attributs : attribute
self
88 / 102
IntroductionXML
DescriptionTraitements
Programmation : SAX et DOMSelection d’informations : XPathTransformation : XSLT
XPath : axes (directions)
Axes relatifs a un nœud
nœuds enfants et descendants : child,descendant, descendant-or-self
nœud parent et ancetres : parent, ancestor,ancestor-or-self
freres : preceding-sibling, following-sibling
nœuds precedents et suivants de la balise dansle document (sans les ascendants /descendants du nœud contexte) : preceding,following
attributs : attribute
self
88 / 102
IntroductionXML
DescriptionTraitements
Programmation : SAX et DOMSelection d’informations : XPathTransformation : XSLT
XPath : axes (directions)
Axes relatifs a un nœud
nœuds enfants et descendants : child,descendant, descendant-or-self
nœud parent et ancetres : parent, ancestor,ancestor-or-self
freres : preceding-sibling, following-sibling
nœuds precedents et suivants de la balise dansle document (sans les ascendants /descendants du nœud contexte) : preceding,following
attributs : attribute
self
88 / 102
IntroductionXML
DescriptionTraitements
Programmation : SAX et DOMSelection d’informations : XPathTransformation : XSLT
XPath : axes (directions)
Axes relatifs a un nœud
nœuds enfants et descendants : child,descendant, descendant-or-self
nœud parent et ancetres : parent, ancestor,ancestor-or-self
freres : preceding-sibling, following-sibling
nœuds precedents et suivants de la balise dansle document (sans les ascendants /descendants du nœud contexte) : preceding,following
attributs : attribute
self
88 / 102
IntroductionXML
DescriptionTraitements
Programmation : SAX et DOMSelection d’informations : XPathTransformation : XSLT
XPath : axes (directions)
Axes relatifs a un nœud
nœuds enfants et descendants : child,descendant, descendant-or-self
nœud parent et ancetres : parent, ancestor,ancestor-or-self
freres : preceding-sibling, following-sibling
nœuds precedents et suivants de la balise dansle document (sans les ascendants /descendants du nœud contexte) : preceding,following
attributs : attribute
self
88 / 102
IntroductionXML
DescriptionTraitements
Programmation : SAX et DOMSelection d’informations : XPathTransformation : XSLT
XPath : axes (directions)
Axes relatifs a un nœud
nœuds enfants et descendants : child,descendant, descendant-or-self
nœud parent et ancetres : parent, ancestor,ancestor-or-self
freres : preceding-sibling, following-sibling
nœuds precedents et suivants de la balise dansle document (sans les ascendants /descendants du nœud contexte) : preceding,following
attributs : attribute
self
88 / 102
IntroductionXML
DescriptionTraitements
Programmation : SAX et DOMSelection d’informations : XPathTransformation : XSLT
XPath : test
Test
Un test est compose d’un filtre sur le nom ou le type du nœud aselectionner suivi d’un predicat optionnel
Exemples
child::seance[@heure=”18.00”]child::seance/@heuredescendant::film[titre=”Sleepy Hollow”]
Filtre
nom d’element : seance
nom d’attribut : @heure
type de nœud : text(), comment()...
“tous les” : * (elements ou attributs)
descendant::film/* pour les elementsdescendant::seances/@* pour les attributs
n’importe quel nœud : node()89 / 102
IntroductionXML
DescriptionTraitements
Programmation : SAX et DOMSelection d’informations : XPathTransformation : XSLT
XPath : predicats
Predicat
Existence d’un attribut ou d’un element avec une valeur donnee
[@heure=”18.00”],[titre=”Sleepy Hollow”][comedien=”Johnny Depp” AND comedienne=”Cristina Ricci”]
Existence d’attributs et d’elements
[@heure],[not(titre) ],[comedien OR comedienne]
Position d’un element (un document XML est un arbre ordonne)
film[2] ou film[position()=2]film[2]/child::acteurs/child::comedien[1]film[2]/child::acteurs/child::comedien[position()=last()]
Nombre d’occurrences d’un element
acteurs[count(child::comedien) > 1]
Renvoi absolu
id(”val identifiant”)
90 / 102
IntroductionXML
DescriptionTraitements
Programmation : SAX et DOMSelection d’informations : XPathTransformation : XSLT
Xpath : syntaxe simplifiee
xpath syntaxe simplifiee
/child::film/child::titre /film/titre/child::film/descendant::comedien /film//comediendescendant::* //*Attribute:: @/descendant::seance[@heure=”18.00”] //seance[@heure=”18.00”]parent::node() ..
91 / 102
IntroductionXML
DescriptionTraitements
Programmation : SAX et DOMSelection d’informations : XPathTransformation : XSLT
XPath : exemples de tests
//comedien|comedienne : tous les elements comedien et tous leselements comedienne
id(”sleepy hollow”): element avec ID ”sleepy hollow”
film[1] : le premier element film
*[position()=1 AND self::comedien] : l’element comedien, s’il est lepremier fils de son pere (et non pas premier comedien)
92 / 102
IntroductionXML
DescriptionTraitements
Programmation : SAX et DOMSelection d’informations : XPathTransformation : XSLT
Exemples de requetes XPath
films//film/titre/text()
films//realisateur
films//film/@film ID
films/cinema[nom=”Reflets Medicis”]/seance/ @*
films/cinema[nom=”Reflets Medicis”]/seance[2]/ @*
films//film/(* except realisateur)
93 / 102
IntroductionXML
DescriptionTraitements
Programmation : SAX et DOMSelection d’informations : XPathTransformation : XSLT
XPointer : utilisation de XPath avec des URIs
Deux axes nouveaux : range et string
range : selection d’une region dans un document
les trois premiers nœuds fils, de l’element ”sleepy hollow”id(”sleepy hollow”)/range::child[1],following-sibling[2]
string : selection d’une sous-chaıne dans le document
la troisieme occurrence de la chaıne ”Johnny Depp”string::3, ”Johnny Depp”
Un nouveau predicat : unique
Pour verifier s’il existe un seul nœud dans le contexte
94 / 102
IntroductionXML
DescriptionTraitements
Programmation : SAX et DOMSelection d’informations : XPathTransformation : XSLT
1 IntroductionXML, pour quoi faire ?HistoriqueStandards
2 Langage de description de donnees : XMLDefinition d’un document XMLDocument bien formeRegles de bonne conception
3 Description de documentsDescription structurelle de documentsDescription typee de documents
4 Traitement des documentsInterfaces de programmation : SAX et DOMSelection d’informations : XPathTransformation d’un document
95 / 102
IntroductionXML
DescriptionTraitements
Programmation : SAX et DOMSelection d’informations : XPathTransformation : XSLT
XSLT
Presentation
XSLT = eXtensible Stylesheet Language Transformations
pour transformer des documents XML en un autre format XML
XSLT 1.0 recommandation W3C en 1999 (encore tres largement utilise),
XSLT 2.0 en 2007
http://www.w3.org/TR/xslt
http://www.w3.org/TR/xslt20/
Liens avec XPath et XQuery
XSLT 2.0 egalement base sur XPath
possibilites proches de celles de XQuery mais
implementations XSLT plutot optimisees pour transformer desdocuments entiers, XQuery des fragments de donneesXQuery a une syntaxe non XML plus compacte (et plus facile a lire)XQuery prevu pour interroger des collections de documents
96 / 102
IntroductionXML
DescriptionTraitements
Programmation : SAX et DOMSelection d’informations : XPathTransformation : XSLT
Feuille de style XSL
Presentation
Objectif : specifier la presentation d’un document XML
mecanismes plus puissants que CSS pour XML
Contenu
Ensembles de regles appeles templates
Un template contient des regles a appliquer lorsqu’un certain nœudest rencontre
97 / 102
IntroductionXML
DescriptionTraitements
Programmation : SAX et DOMSelection d’informations : XPathTransformation : XSLT
Exemple : fichier XML
<? xml v e r s i o n=” 1 . 0 ” e n c o d i n g=”ISO−8859−1”?><? xml−s t y l e s h e e t t y p e=” t e x t / x s l ” h r e f=” c d c a t a l o g . x s l ”?><c a t a l o g>
<cd>< t i t l e>Empire B u r l e s q u e</ t i t l e>< a r t i s t>Bob Dylan</ a r t i s t><c o u n t r y>USA</ c o u n t r y><company>Columbia</company><p r i c e>1 0 . 9 0</ p r i c e><y e a r>1985</ y e a r>
</ cd>. . .</ c a t a l o g>
98 / 102
IntroductionXML
DescriptionTraitements
Programmation : SAX et DOMSelection d’informations : XPathTransformation : XSLT
Feuille de style XSL
<? xml v e r s i o n=” 1 . 0 ” e n c o d i n g=”ISO−8859−1”?>
<x s l : s t y l e s h e e t v e r s i o n=” 1 . 0 ”x m l n s : x s l=” h t t p : //www. w3 . org /1999/XSL/ Transform ”>
<x s l : t e m p l a t e match=”/”><html><body><h2>My CD C o l l e c t i o n</h2><t a b l e b o r d e r=”1”>
<t r b g c o l o r=”#9acd32 ”><th>T i t l e</ th><th>A r t i s t</ th>
</ t r><x s l : f o r −each s e l e c t=” c a t a l o g / cd ”><t r>
<td><x s l : v a l u e−o f s e l e c t=” t i t l e ”/></ td><td><x s l : v a l u e−o f s e l e c t=” a r t i s t ”/></ td>
</ t r></ x s l : f o r −each>
</ t a b l e></ body></ html>
</ x s l : t e m p l a t e>
</ x s l : s t y l e s h e e t>99 / 102
IntroductionXML
DescriptionTraitements
Programmation : SAX et DOMSelection d’informations : XPathTransformation : XSLT
Generer l’arbre de sortie
Elements XSLT
generer du texte : xsl:value-of
inserer un nombre : xsl-number
copier un nœud : xsl-copy
creer un element, un attribut... : xsl-element, xsl-attribute
repetition : xsl:for-each
instructions conditionnelles : xsl:if et xsl-choose
tri : xsl-sort
appliquer les templates pour le nœud courant et ses fils :xsl-apply-templates
100 / 102
IntroductionXML
DescriptionTraitements
Programmation : SAX et DOMSelection d’informations : XPathTransformation : XSLT
Transformation
processeur peut etre lenavigateur internet
101 / 102
IntroductionXML
DescriptionTraitements
Programmation : SAX et DOMSelection d’informations : XPathTransformation : XSLT
Vue d’ensemble
102 / 102