le langage de documents xml · 2018-03-09 · standards avantages et inconv enients / tr es verbeux...

114
Introduction XML Description Traitements Le langage de documents XML Anne-Laure Ligozat ENSIIE derni` ere m` aj: mars 2017 1 / 102

Upload: others

Post on 26-Jun-2020

0 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Le langage de documents XML · 2018-03-09 · Standards Avantages et inconv enients / tr es verbeux ) balisage r ep etitif, ... Standards XML vs JSON XML + lisibilit e annotations

IntroductionXML

DescriptionTraitements

Le langage de documents XML

Anne-Laure Ligozat

ENSIIE

derniere maj: mars 2017

1 / 102

Page 2: Le langage de documents XML · 2018-03-09 · Standards Avantages et inconv enients / tr es verbeux ) balisage r ep etitif, ... Standards XML vs JSON XML + lisibilit e annotations

IntroductionXML

DescriptionTraitements

1 Introduction

2 Langage de description de donnees : XML

3 Description de documents

4 Traitement des documents

2 / 102

Page 3: Le langage de documents XML · 2018-03-09 · Standards Avantages et inconv enients / tr es verbeux ) balisage r ep etitif, ... Standards XML vs JSON XML + lisibilit e annotations

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

Page 4: Le langage de documents XML · 2018-03-09 · Standards Avantages et inconv enients / tr es verbeux ) balisage r ep etitif, ... Standards XML vs JSON XML + lisibilit e annotations

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

Page 5: Le langage de documents XML · 2018-03-09 · Standards Avantages et inconv enients / tr es verbeux ) balisage r ep etitif, ... Standards XML vs JSON XML + lisibilit e annotations

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

Page 6: Le langage de documents XML · 2018-03-09 · Standards Avantages et inconv enients / tr es verbeux ) balisage r ep etitif, ... Standards XML vs JSON XML + lisibilit e annotations

IntroductionXML

DescriptionTraitements

XML, pour quoi faire ?HistoriqueStandards

Motivation pour XML

un seul langage pour decrire et echanger des donnees

6 / 102

Page 7: Le langage de documents XML · 2018-03-09 · Standards Avantages et inconv enients / tr es verbeux ) balisage r ep etitif, ... Standards XML vs JSON XML + lisibilit e annotations

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

Page 8: Le langage de documents XML · 2018-03-09 · Standards Avantages et inconv enients / tr es verbeux ) balisage r ep etitif, ... Standards XML vs JSON XML + lisibilit e annotations

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

Page 9: Le langage de documents XML · 2018-03-09 · Standards Avantages et inconv enients / tr es verbeux ) balisage r ep etitif, ... Standards XML vs JSON XML + lisibilit e annotations

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

Page 10: Le langage de documents XML · 2018-03-09 · Standards Avantages et inconv enients / tr es verbeux ) balisage r ep etitif, ... Standards XML vs JSON XML + lisibilit e annotations

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

Page 11: Le langage de documents XML · 2018-03-09 · Standards Avantages et inconv enients / tr es verbeux ) balisage r ep etitif, ... Standards XML vs JSON XML + lisibilit e annotations

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

Page 12: Le langage de documents XML · 2018-03-09 · Standards Avantages et inconv enients / tr es verbeux ) balisage r ep etitif, ... Standards XML vs JSON XML + lisibilit e annotations

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

Page 13: Le langage de documents XML · 2018-03-09 · Standards Avantages et inconv enients / tr es verbeux ) balisage r ep etitif, ... Standards XML vs JSON XML + lisibilit e annotations

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

Page 14: Le langage de documents XML · 2018-03-09 · Standards Avantages et inconv enients / tr es verbeux ) balisage r ep etitif, ... Standards XML vs JSON XML + lisibilit e annotations

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

Page 15: Le langage de documents XML · 2018-03-09 · Standards Avantages et inconv enients / tr es verbeux ) balisage r ep etitif, ... Standards XML vs JSON XML + lisibilit e annotations

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

Page 16: Le langage de documents XML · 2018-03-09 · Standards Avantages et inconv enients / tr es verbeux ) balisage r ep etitif, ... Standards XML vs JSON XML + lisibilit e annotations

IntroductionXML

DescriptionTraitements

XML, pour quoi faire ?HistoriqueStandards

Differents standards

16 / 102

Page 17: Le langage de documents XML · 2018-03-09 · Standards Avantages et inconv enients / tr es verbeux ) balisage r ep etitif, ... Standards XML vs JSON XML + lisibilit e annotations

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

Page 18: Le langage de documents XML · 2018-03-09 · Standards Avantages et inconv enients / tr es verbeux ) balisage r ep etitif, ... Standards XML vs JSON XML + lisibilit e annotations

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

Page 19: Le langage de documents XML · 2018-03-09 · Standards Avantages et inconv enients / tr es verbeux ) balisage r ep etitif, ... Standards XML vs JSON XML + lisibilit e annotations

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

Page 20: Le langage de documents XML · 2018-03-09 · Standards Avantages et inconv enients / tr es verbeux ) balisage r ep etitif, ... Standards XML vs JSON XML + lisibilit e annotations

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

Page 21: Le langage de documents XML · 2018-03-09 · Standards Avantages et inconv enients / tr es verbeux ) balisage r ep etitif, ... Standards XML vs JSON XML + lisibilit e annotations

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

Page 22: Le langage de documents XML · 2018-03-09 · Standards Avantages et inconv enients / tr es verbeux ) balisage r ep etitif, ... Standards XML vs JSON XML + lisibilit e annotations

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

Page 23: Le langage de documents XML · 2018-03-09 · Standards Avantages et inconv enients / tr es verbeux ) balisage r ep etitif, ... Standards XML vs JSON XML + lisibilit e annotations

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

Page 24: Le langage de documents XML · 2018-03-09 · Standards Avantages et inconv enients / tr es verbeux ) balisage r ep etitif, ... Standards XML vs JSON XML + lisibilit e annotations

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

Page 25: Le langage de documents XML · 2018-03-09 · Standards Avantages et inconv enients / tr es verbeux ) balisage r ep etitif, ... Standards XML vs JSON XML + lisibilit e annotations

IntroductionXML

DescriptionTraitements

Definition d’un document XMLDocument bien formeRegles de bonne conception

Visualisation dans le navigateur firefox

22 / 102

Page 26: Le langage de documents XML · 2018-03-09 · Standards Avantages et inconv enients / tr es verbeux ) balisage r ep etitif, ... Standards XML vs JSON XML + lisibilit e annotations

IntroductionXML

DescriptionTraitements

Definition d’un document XMLDocument bien formeRegles de bonne conception

Visualisation (simplifiee) sous forme d’arbre

23 / 102

Page 27: Le langage de documents XML · 2018-03-09 · Standards Avantages et inconv enients / tr es verbeux ) balisage r ep etitif, ... Standards XML vs JSON XML + lisibilit e annotations

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

Page 28: Le langage de documents XML · 2018-03-09 · Standards Avantages et inconv enients / tr es verbeux ) balisage r ep etitif, ... Standards XML vs JSON XML + lisibilit e annotations

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

Page 29: Le langage de documents XML · 2018-03-09 · Standards Avantages et inconv enients / tr es verbeux ) balisage r ep etitif, ... Standards XML vs JSON XML + lisibilit e annotations

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

Page 30: Le langage de documents XML · 2018-03-09 · Standards Avantages et inconv enients / tr es verbeux ) balisage r ep etitif, ... Standards XML vs JSON XML + lisibilit e annotations

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

Page 31: Le langage de documents XML · 2018-03-09 · Standards Avantages et inconv enients / tr es verbeux ) balisage r ep etitif, ... Standards XML vs JSON XML + lisibilit e annotations

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

Page 32: Le langage de documents XML · 2018-03-09 · Standards Avantages et inconv enients / tr es verbeux ) balisage r ep etitif, ... Standards XML vs JSON XML + lisibilit e annotations

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

Page 33: Le langage de documents XML · 2018-03-09 · Standards Avantages et inconv enients / tr es verbeux ) balisage r ep etitif, ... Standards XML vs JSON XML + lisibilit e annotations

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

Page 34: Le langage de documents XML · 2018-03-09 · Standards Avantages et inconv enients / tr es verbeux ) balisage r ep etitif, ... Standards XML vs JSON XML + lisibilit e annotations

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

Page 35: Le langage de documents XML · 2018-03-09 · Standards Avantages et inconv enients / tr es verbeux ) balisage r ep etitif, ... Standards XML vs JSON XML + lisibilit e annotations

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

Page 36: Le langage de documents XML · 2018-03-09 · Standards Avantages et inconv enients / tr es verbeux ) balisage r ep etitif, ... Standards XML vs JSON XML + lisibilit e annotations

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

Page 37: Le langage de documents XML · 2018-03-09 · Standards Avantages et inconv enients / tr es verbeux ) balisage r ep etitif, ... Standards XML vs JSON XML + lisibilit e annotations

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

Page 38: Le langage de documents XML · 2018-03-09 · Standards Avantages et inconv enients / tr es verbeux ) balisage r ep etitif, ... Standards XML vs JSON XML + lisibilit e annotations

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

Page 39: Le langage de documents XML · 2018-03-09 · Standards Avantages et inconv enients / tr es verbeux ) balisage r ep etitif, ... Standards XML vs JSON XML + lisibilit e annotations

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

Page 40: Le langage de documents XML · 2018-03-09 · Standards Avantages et inconv enients / tr es verbeux ) balisage r ep etitif, ... Standards XML vs JSON XML + lisibilit e annotations

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

Page 41: Le langage de documents XML · 2018-03-09 · Standards Avantages et inconv enients / tr es verbeux ) balisage r ep etitif, ... Standards XML vs JSON XML + lisibilit e annotations

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

Page 42: Le langage de documents XML · 2018-03-09 · Standards Avantages et inconv enients / tr es verbeux ) balisage r ep etitif, ... Standards XML vs JSON XML + lisibilit e annotations

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

Page 43: Le langage de documents XML · 2018-03-09 · Standards Avantages et inconv enients / tr es verbeux ) balisage r ep etitif, ... Standards XML vs JSON XML + lisibilit e annotations

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

Page 44: Le langage de documents XML · 2018-03-09 · Standards Avantages et inconv enients / tr es verbeux ) balisage r ep etitif, ... Standards XML vs JSON XML + lisibilit e annotations

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

Page 45: Le langage de documents XML · 2018-03-09 · Standards Avantages et inconv enients / tr es verbeux ) balisage r ep etitif, ... Standards XML vs JSON XML + lisibilit e annotations

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

Page 46: Le langage de documents XML · 2018-03-09 · Standards Avantages et inconv enients / tr es verbeux ) balisage r ep etitif, ... Standards XML vs JSON XML + lisibilit e annotations

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

Page 47: Le langage de documents XML · 2018-03-09 · Standards Avantages et inconv enients / tr es verbeux ) balisage r ep etitif, ... Standards XML vs JSON XML + lisibilit e annotations

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

&lt; <&gt; >&amp; &&quot; ”&apos; ’

PCDATA (parsed character data): chaıne de caracteres analysee parun outil

CDATA: chaıne de caracteres non analysee par un outil

42 / 102

Page 48: Le langage de documents XML · 2018-03-09 · Standards Avantages et inconv enients / tr es verbeux ) balisage r ep etitif, ... Standards XML vs JSON XML + lisibilit e annotations

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

Page 49: Le langage de documents XML · 2018-03-09 · Standards Avantages et inconv enients / tr es verbeux ) balisage r ep etitif, ... Standards XML vs JSON XML + lisibilit e annotations

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

Page 50: Le langage de documents XML · 2018-03-09 · Standards Avantages et inconv enients / tr es verbeux ) balisage r ep etitif, ... Standards XML vs JSON XML + lisibilit e annotations

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

Page 51: Le langage de documents XML · 2018-03-09 · Standards Avantages et inconv enients / tr es verbeux ) balisage r ep etitif, ... Standards XML vs JSON XML + lisibilit e annotations

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

Page 52: Le langage de documents XML · 2018-03-09 · Standards Avantages et inconv enients / tr es verbeux ) balisage r ep etitif, ... Standards XML vs JSON XML + lisibilit e annotations

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

Page 53: Le langage de documents XML · 2018-03-09 · Standards Avantages et inconv enients / tr es verbeux ) balisage r ep etitif, ... Standards XML vs JSON XML + lisibilit e annotations

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

Page 54: Le langage de documents XML · 2018-03-09 · Standards Avantages et inconv enients / tr es verbeux ) balisage r ep etitif, ... Standards XML vs JSON XML + lisibilit e annotations

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

Page 55: Le langage de documents XML · 2018-03-09 · Standards Avantages et inconv enients / tr es verbeux ) balisage r ep etitif, ... Standards XML vs JSON XML + lisibilit e annotations

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

Page 56: Le langage de documents XML · 2018-03-09 · Standards Avantages et inconv enients / tr es verbeux ) balisage r ep etitif, ... Standards XML vs JSON XML + lisibilit e annotations

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

Page 57: Le langage de documents XML · 2018-03-09 · Standards Avantages et inconv enients / tr es verbeux ) balisage r ep etitif, ... Standards XML vs JSON XML + lisibilit e annotations

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

Page 58: Le langage de documents XML · 2018-03-09 · Standards Avantages et inconv enients / tr es verbeux ) balisage r ep etitif, ... Standards XML vs JSON XML + lisibilit e annotations

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

Page 59: Le langage de documents XML · 2018-03-09 · Standards Avantages et inconv enients / tr es verbeux ) balisage r ep etitif, ... Standards XML vs JSON XML + lisibilit e annotations

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

Page 60: Le langage de documents XML · 2018-03-09 · Standards Avantages et inconv enients / tr es verbeux ) balisage r ep etitif, ... Standards XML vs JSON XML + lisibilit e annotations

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

Page 61: Le langage de documents XML · 2018-03-09 · Standards Avantages et inconv enients / tr es verbeux ) balisage r ep etitif, ... Standards XML vs JSON XML + lisibilit e annotations

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

Page 62: Le langage de documents XML · 2018-03-09 · Standards Avantages et inconv enients / tr es verbeux ) balisage r ep etitif, ... Standards XML vs JSON XML + lisibilit e annotations

IntroductionXML

DescriptionTraitements

DTDSchemas

Types simples

Elements et attributs peuvent avoir un contenu simple :

43 types predefinis atomiques

57 / 102

Page 63: Le langage de documents XML · 2018-03-09 · Standards Avantages et inconv enients / tr es verbeux ) balisage r ep etitif, ... Standards XML vs JSON XML + lisibilit e annotations

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

Page 64: Le langage de documents XML · 2018-03-09 · Standards Avantages et inconv enients / tr es verbeux ) balisage r ep etitif, ... Standards XML vs JSON XML + lisibilit e annotations

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

Page 65: Le langage de documents XML · 2018-03-09 · Standards Avantages et inconv enients / tr es verbeux ) balisage r ep etitif, ... Standards XML vs JSON XML + lisibilit e annotations

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

Page 66: Le langage de documents XML · 2018-03-09 · Standards Avantages et inconv enients / tr es verbeux ) balisage r ep etitif, ... Standards XML vs JSON XML + lisibilit e annotations

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

Page 67: Le langage de documents XML · 2018-03-09 · Standards Avantages et inconv enients / tr es verbeux ) balisage r ep etitif, ... Standards XML vs JSON XML + lisibilit e annotations

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

Page 68: Le langage de documents XML · 2018-03-09 · Standards Avantages et inconv enients / tr es verbeux ) balisage r ep etitif, ... Standards XML vs JSON XML + lisibilit e annotations

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

Page 69: Le langage de documents XML · 2018-03-09 · Standards Avantages et inconv enients / tr es verbeux ) balisage r ep etitif, ... Standards XML vs JSON XML + lisibilit e annotations

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

Page 70: Le langage de documents XML · 2018-03-09 · Standards Avantages et inconv enients / tr es verbeux ) balisage r ep etitif, ... Standards XML vs JSON XML + lisibilit e annotations

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

Page 71: Le langage de documents XML · 2018-03-09 · Standards Avantages et inconv enients / tr es verbeux ) balisage r ep etitif, ... Standards XML vs JSON XML + lisibilit e annotations

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

Page 72: Le langage de documents XML · 2018-03-09 · Standards Avantages et inconv enients / tr es verbeux ) balisage r ep etitif, ... Standards XML vs JSON XML + lisibilit e annotations

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

Page 73: Le langage de documents XML · 2018-03-09 · Standards Avantages et inconv enients / tr es verbeux ) balisage r ep etitif, ... Standards XML vs JSON XML + lisibilit e annotations

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

Page 74: Le langage de documents XML · 2018-03-09 · Standards Avantages et inconv enients / tr es verbeux ) balisage r ep etitif, ... Standards XML vs JSON XML + lisibilit e annotations

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

Page 75: Le langage de documents XML · 2018-03-09 · Standards Avantages et inconv enients / tr es verbeux ) balisage r ep etitif, ... Standards XML vs JSON XML + lisibilit e annotations

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

Page 76: Le langage de documents XML · 2018-03-09 · Standards Avantages et inconv enients / tr es verbeux ) balisage r ep etitif, ... Standards XML vs JSON XML + lisibilit e annotations

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

Page 77: Le langage de documents XML · 2018-03-09 · Standards Avantages et inconv enients / tr es verbeux ) balisage r ep etitif, ... Standards XML vs JSON XML + lisibilit e annotations

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

Page 78: Le langage de documents XML · 2018-03-09 · Standards Avantages et inconv enients / tr es verbeux ) balisage r ep etitif, ... Standards XML vs JSON XML + lisibilit e annotations

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

Page 79: Le langage de documents XML · 2018-03-09 · Standards Avantages et inconv enients / tr es verbeux ) balisage r ep etitif, ... Standards XML vs JSON XML + lisibilit e annotations

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

Page 80: Le langage de documents XML · 2018-03-09 · Standards Avantages et inconv enients / tr es verbeux ) balisage r ep etitif, ... Standards XML vs JSON XML + lisibilit e annotations

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

Page 81: Le langage de documents XML · 2018-03-09 · Standards Avantages et inconv enients / tr es verbeux ) balisage r ep etitif, ... Standards XML vs JSON XML + lisibilit e annotations

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

Page 82: Le langage de documents XML · 2018-03-09 · Standards Avantages et inconv enients / tr es verbeux ) balisage r ep etitif, ... Standards XML vs JSON XML + lisibilit e annotations

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

Page 83: Le langage de documents XML · 2018-03-09 · Standards Avantages et inconv enients / tr es verbeux ) balisage r ep etitif, ... Standards XML vs JSON XML + lisibilit e annotations

IntroductionXML

DescriptionTraitements

Programmation : SAX et DOMSelection d’informations : XPathTransformation : XSLT

Comparaison DOM/SAX

78 / 102

Page 84: Le langage de documents XML · 2018-03-09 · Standards Avantages et inconv enients / tr es verbeux ) balisage r ep etitif, ... Standards XML vs JSON XML + lisibilit e annotations

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

Page 85: Le langage de documents XML · 2018-03-09 · Standards Avantages et inconv enients / tr es verbeux ) balisage r ep etitif, ... Standards XML vs JSON XML + lisibilit e annotations

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

Page 86: Le langage de documents XML · 2018-03-09 · Standards Avantages et inconv enients / tr es verbeux ) balisage r ep etitif, ... Standards XML vs JSON XML + lisibilit e annotations

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

Page 87: Le langage de documents XML · 2018-03-09 · Standards Avantages et inconv enients / tr es verbeux ) balisage r ep etitif, ... Standards XML vs JSON XML + lisibilit e annotations

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

Page 88: Le langage de documents XML · 2018-03-09 · Standards Avantages et inconv enients / tr es verbeux ) balisage r ep etitif, ... Standards XML vs JSON XML + lisibilit e annotations

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

Page 89: Le langage de documents XML · 2018-03-09 · Standards Avantages et inconv enients / tr es verbeux ) balisage r ep etitif, ... Standards XML vs JSON XML + lisibilit e annotations

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

Page 90: Le langage de documents XML · 2018-03-09 · Standards Avantages et inconv enients / tr es verbeux ) balisage r ep etitif, ... Standards XML vs JSON XML + lisibilit e annotations

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

Page 91: Le langage de documents XML · 2018-03-09 · Standards Avantages et inconv enients / tr es verbeux ) balisage r ep etitif, ... Standards XML vs JSON XML + lisibilit e annotations

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

Page 92: Le langage de documents XML · 2018-03-09 · Standards Avantages et inconv enients / tr es verbeux ) balisage r ep etitif, ... Standards XML vs JSON XML + lisibilit e annotations

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

Page 93: Le langage de documents XML · 2018-03-09 · Standards Avantages et inconv enients / tr es verbeux ) balisage r ep etitif, ... Standards XML vs JSON XML + lisibilit e annotations

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

Page 94: Le langage de documents XML · 2018-03-09 · Standards Avantages et inconv enients / tr es verbeux ) balisage r ep etitif, ... Standards XML vs JSON XML + lisibilit e annotations

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

Page 95: Le langage de documents XML · 2018-03-09 · Standards Avantages et inconv enients / tr es verbeux ) balisage r ep etitif, ... Standards XML vs JSON XML + lisibilit e annotations

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

Page 96: Le langage de documents XML · 2018-03-09 · Standards Avantages et inconv enients / tr es verbeux ) balisage r ep etitif, ... Standards XML vs JSON XML + lisibilit e annotations

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

Page 97: Le langage de documents XML · 2018-03-09 · Standards Avantages et inconv enients / tr es verbeux ) balisage r ep etitif, ... Standards XML vs JSON XML + lisibilit e annotations

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

Page 98: Le langage de documents XML · 2018-03-09 · Standards Avantages et inconv enients / tr es verbeux ) balisage r ep etitif, ... Standards XML vs JSON XML + lisibilit e annotations

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

Page 99: Le langage de documents XML · 2018-03-09 · Standards Avantages et inconv enients / tr es verbeux ) balisage r ep etitif, ... Standards XML vs JSON XML + lisibilit e annotations

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

Page 100: Le langage de documents XML · 2018-03-09 · Standards Avantages et inconv enients / tr es verbeux ) balisage r ep etitif, ... Standards XML vs JSON XML + lisibilit e annotations

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

Page 101: Le langage de documents XML · 2018-03-09 · Standards Avantages et inconv enients / tr es verbeux ) balisage r ep etitif, ... Standards XML vs JSON XML + lisibilit e annotations

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

Page 102: Le langage de documents XML · 2018-03-09 · Standards Avantages et inconv enients / tr es verbeux ) balisage r ep etitif, ... Standards XML vs JSON XML + lisibilit e annotations

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

Page 103: Le langage de documents XML · 2018-03-09 · Standards Avantages et inconv enients / tr es verbeux ) balisage r ep etitif, ... Standards XML vs JSON XML + lisibilit e annotations

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

Page 104: Le langage de documents XML · 2018-03-09 · Standards Avantages et inconv enients / tr es verbeux ) balisage r ep etitif, ... Standards XML vs JSON XML + lisibilit e annotations

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

Page 105: Le langage de documents XML · 2018-03-09 · Standards Avantages et inconv enients / tr es verbeux ) balisage r ep etitif, ... Standards XML vs JSON XML + lisibilit e annotations

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

Page 106: Le langage de documents XML · 2018-03-09 · Standards Avantages et inconv enients / tr es verbeux ) balisage r ep etitif, ... Standards XML vs JSON XML + lisibilit e annotations

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

Page 107: Le langage de documents XML · 2018-03-09 · Standards Avantages et inconv enients / tr es verbeux ) balisage r ep etitif, ... Standards XML vs JSON XML + lisibilit e annotations

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

Page 108: Le langage de documents XML · 2018-03-09 · Standards Avantages et inconv enients / tr es verbeux ) balisage r ep etitif, ... Standards XML vs JSON XML + lisibilit e annotations

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

Page 109: Le langage de documents XML · 2018-03-09 · Standards Avantages et inconv enients / tr es verbeux ) balisage r ep etitif, ... Standards XML vs JSON XML + lisibilit e annotations

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

Page 110: Le langage de documents XML · 2018-03-09 · Standards Avantages et inconv enients / tr es verbeux ) balisage r ep etitif, ... Standards XML vs JSON XML + lisibilit e annotations

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

Page 111: Le langage de documents XML · 2018-03-09 · Standards Avantages et inconv enients / tr es verbeux ) balisage r ep etitif, ... Standards XML vs JSON XML + lisibilit e annotations

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

Page 112: Le langage de documents XML · 2018-03-09 · Standards Avantages et inconv enients / tr es verbeux ) balisage r ep etitif, ... Standards XML vs JSON XML + lisibilit e annotations

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

Page 113: Le langage de documents XML · 2018-03-09 · Standards Avantages et inconv enients / tr es verbeux ) balisage r ep etitif, ... Standards XML vs JSON XML + lisibilit e annotations

IntroductionXML

DescriptionTraitements

Programmation : SAX et DOMSelection d’informations : XPathTransformation : XSLT

Transformation

processeur peut etre lenavigateur internet

101 / 102

Page 114: Le langage de documents XML · 2018-03-09 · Standards Avantages et inconv enients / tr es verbeux ) balisage r ep etitif, ... Standards XML vs JSON XML + lisibilit e annotations

IntroductionXML

DescriptionTraitements

Programmation : SAX et DOMSelection d’informations : XPathTransformation : XSLT

Vue d’ensemble

102 / 102