Vous êtes sur la page 1sur 149

KWWSZZZDGHOHLPDJIUaGRQVH]FRXUV

;0/
H;WHQVLEOH0DUNXS/DQJXDJH
&HFRXUVHVWVXU
KWWSZZZDGHOHLPDJIUaGRQVH]FRXUV[POSGI

Didier DONSEZ
Université Joseph Fourier
IMA –IMAG/LSR/ADELE
'LGLHU'RQVH]#LPDJIU
'LGLHU'RQVH]#LHHHRUJ

2

Les Applications XML

33 :HE 6HUYLFHV

:0/ 8'',
-;7$ HE;0/
5') 2$*,6
;6/)2 :6'/
&') %30/
62$3 ;$0/
566 ;6/7
%30/ [&%/
69*
;+70/
5RVHWWD1HW
'LGLHU'RQVH];0/

;8/ ;)RUP F;0/

%& ($, %%



3

Au sommaire

■ Principes de SGML et Limites de HTML


■ Le typage de document
• DTD, Namespace, XML Schema
■ L’Outillage XML
• XPath, Xquery, XSL-T, XSL-FO
■ Les API
• SAX, DOM
■ Les Applications
'LGLHU'RQVH];0/

■ Bibliographie

4
Principe de la GED
*HVWLRQ(OHFWURQLTXH'RFXPHQWDLUH
■ Gestion des Documents de l ’entreprise
• Documents commerciaux
catalogues, fiches produits, factures, …
• Documents techniques
spécifications techniques, manuels utilisateur, manuels d ’entretien, …
• Documents qualités
suivi de fabrication de lots, rapports d ’incident, …
• Volume : 90% de l ’information est sous cette forme
■ Objectif de la GED
• Représentation XQLIRUPHYRLUQRUPDOLVp
'LGLHU'RQVH];0/

• Archivage
• Recherche

5

Exemple de Document Structuré

■ Document structuré
• comporte des parties ayant une signification particulière
■ Exemple
|------titre=Autour d’&xml;
|
|------date=1998
| |----paragraphe1
| |----figure1
| |---section1---|----paragraphe2
| | |----paragraphe3
|--chapitre1---|
| | |----paragraphe1
| |---section2---|----paragraphe2
| |----figure2
| |----paragraphe3
livre-----|
| |-------------------titre
| |
| | |----paragraphe1
'LGLHU'RQVH];0/

| | |----figure3
|--chapitre2---|---section1---|----paragraphe2
|----paragraphe3

■ La GED utilise des documents structurés


• je recherche tous les documents dont le titre contient XML !

6
Un peu d ’histoire
/HV3ULQFLSHVGH6*0/DQG &R
• 8QHQVHPEOHGHVWDQGDUGVSRXUOHVGRFXPHQWVVWUXFWXUpV
■ SGML [Goldfarb, 74] : 6WDQGDUG *HQHUDOL]HG0DUNXS/DQJXDJH ,62
• Description de la structure d ’un type de document
• Les documents de ce type respectent la structure
■ DSSSL : 'RFXPHQW6W\OH6HPDQWLFV DQG6SHFLILFDWLRQ/DQJXDJH
• Feuille de style associée à un type de document
■ SPDL : 6WDQGDUG3DJH'HVFULSWLRQ/DQJDJH
• Formatage des documents SGML (+DSSSL)
Doc
Doc PDF
Doc Doc
Vérification Balisé Style Formatage
Balisé SPDL
'LGLHU'RQVH];0/

Vérifié Doc
PS

DTD Spec Rsrc


SGML DSSSL Typo

7

SGML

■ DTD : Document Type Description


• Grammaire de description d ’un type de document
• Elément, Attribut, Entité
• DTD normalisée (PUBLIC), DTD spécifique (SYSTEM)
■ Exemple
'2&7<3(OLYUH>
(/(0(17OLYUH  WLWUHGDWH"FKDSLWUH !
(/(0(17FKDSLWUH  WLWOH"VHFWLRQ !
(/(0(17VHFWLRQ  2 SDUDJUDSKH_ILJXUH  !
(/(0(17 WLWUH_SDUDJUDSKH   2 3&'$7$ !
(/(0(17GDWH  2 (037< !
(/(0(17ILJXUH  2 (037< !
$77/,67GDWH DQQpH 180%(5 5(48,5('
'LGLHU'RQVH];0/

PRLV &'$7$ ,03/,('!


$77/,67ILJXUH UHI &'$7$ 5(48,5('!
(17,7<[PO ;0/!
@!

8

Représentation des instances de DTD SGML

■ Structuration par Balisage (TAG)


• Document instance d ’une DTD
• '2&7<3(OLYUH6<67(0 © OLYUHGWG>VXSSOpPHQWV @!
OLYUH!«OLYUH!
• '2&7<3( P\GWG > GpFODUDWLRQVGH0<'7'!« @!
P\GWG!9RLFLXQLQVWDQFHG ·XQGRFXPHQW0<'7'P\GWG!
• Eléments
• FKDSLWUH!«FKDSLWUH!
• WLWUH!« fermeture optionnelle car pas de sous éléments
• GDWH«! élément atomique sans texte
• Attributs
• GDWHDQQHH ! attribut obligatoire
• GDWHDQQHH PRLV -DQYLHU! attribut optionnel
'LGLHU'RQVH];0/

• Entités
• [PO instance d ’entité

9

Une instance d ’un type de document SGML

'2&7<3(OLYUH6<67(0 OLYUHGWG>(17,7<DXWRXU$XWRXU!@!
OLYUH!² XQFRPPHQWDLUH!
WLWOH! DXWRXUG¶ [POWLWOH!
GDWHDQQHH !
FKDSLWUH!
VHFWLRQ!
SDUDJUDSKH! [POHVWO¶DFURQ\PHGHH;WHQELOH 0DUNXS /DQJXDJHSDUDJUDSKH!
ILJXUHUHI ILJXUHHSV!
SDUDJUDSKH!6RQSUpFXUVHXUHVW6*0/
SDUDJUDSKH!,OH[LVWHGHQRPEUHXVHVDSSOLFDWLRQV [PO
VHFWLRQ!
VHFWLRQ!
SDUDJUDSKH!8QGRFXPHQWHVWELHQIRUPpTXDQG« SDUDJUDSKH!
SDUDJUDSKH!8QGRFXPHQWHVWYDOLGHTXDQG«
ILJXUH UHI ILJXUHHSV!
'LGLHU'RQVH];0/

SDUDJUDSKH!8QGRFXPHQWHVWGLWVWDQGDORQH TXDQG«SDUDJUDSKH!
VHFWLRQ!
FKDSLWUH!
² G·DXWUHVFKDSLWUHV!
OLYUH!

10

Limites de HTML

■ HTML 4.0 et DHTML


• extensibilité par la normalisation
• pas de validation de la structure

■ SGML
• structure « sémantique » et type de document (DTD)
• mais reste compliqué et non intégré aux browsers
'LGLHU'RQVH];0/

■ XML
• principes de SGML mais simplification de la DTD
'LGLHU'RQVH];0/


HTML vs. XML
11

12

XML eXtensible Markup Language

■ Document Standalone
• Les documents sont bien formés (ZHOOIRUPHG),

■ Document Type Definition, DTD


• Typage de documents structurés et extensibles
• Les documents sont valides (YDOLG)

■ XML Schema
• Schema des documents
• Exprimé en syntaxe XML et extensible (contrairement à la DTD)

■ Extensible Stylesheet Language, XSL


'LGLHU'RQVH];0/

• Transformation et réorganisation d ’un document XML


■ Xlink, XPointers
• Hyperliens évolués

14

Les Documents XML

■ Ils sont structurés en élément


■ Ils doivent être %LHQ)RUPpV (:HOOIRUPHG)
• balisage à la SGML
• cependant <element> et </element> obligatoires
• sauf <empty_element/>
• la valeur des attributs est toujours entre double cote
<element attr="valeur"/>
■ Ils peuvent être 9DOLGpV(9DOLG)
• Utilisé une DTD (Document Type Definition)
ou un schéma XML
'LGLHU'RQVH];0/

qui définit la structure d ’un type de document


• DTD XML : Simplification de la grammaire SGML des DTDs
Conformance: pour toute DTD XML , il existe une DTD SGML conforme

15

Exemple de documents XML (i)

■ Un document XML bien formé


"[PO YHUVLRQ VWDQGDORQH \HV"!
JUHHWLQJ!+HOOREU!ZRUOGJUHHWLQJ!
■ Un document XML valide incluant une DTD
"[PO YHUVLRQ  HQFRGLQJ 87)"!
'2&7<3( JUHHWLQJ >
(/(0(17 JUHHWLQJ 3&'$7$_EU !
(/(0(17 EU (037<!
@!
'LGLHU'RQVH];0/

JUHHWLQJ!+HOOREU!ZRUOGJUHHWLQJ!

16

Exemple de documents XML (ii)

■ Un document XML valide


utilisant un DTD externe
"[PO YHUVLRQ "!
'2&7<3( JUHHWLQJ 6<67(0KHOORGWG!
JUHHWLQJ!+HOOREU!ZRUOGJUHHWLQJ!
■ Un document XML valide
utilisant un schema XML
JUHHWLQJ
[POQV[VL KWWSZZZZRUJ;0/6FKHPDLQVWDQFH
'LGLHU'RQVH];0/

[VLQR1DPHVSDFH6FKHPD/RFDWLRQ JUHHWLQJ[VG
!
JUHHWLQJ!+HOOREU!ZRUOGJUHHWLQJ!

17

Exercice
Donnez un document XML représentant cette recette
'LGLHU'RQVH];0/

18

Généralités sur les documents XML

■ Les caractères
• codage Unicode (34168 symboles de 24 alphabets)
• les parsers traitent au minimun UTF-8 et UTF-16
■ Les espaces
• les caractères ‘ ‘ , ‘ \r ’, ‘ \n ’, ‘ \t ’ sont considérés comme des
séparateurs (texte XML « au kilomêtre »)
■ Les identificateurs
• respect de la casse !
■ Les commentaires
 &HFLHVWXQFRPPHQWDLUH
'LGLHU'RQVH];0/

EODEODEOD
TXLVHWHUPLQHLFL!

19

La structure d ’un document

■ Le prologue
■ La DTD
■ Les éléments
■ Les balises (tags)
■ Les attributs
■ Les références aux entités
■ Les références aux caractères
■ Les sections CDATA
'LGLHU'RQVH];0/

■ Les données

20

La structure d ’un document XML

■ Le prologue
"[PO YHUVLRQ "!
"[PO YHUVLRQ HQFRGLQJ ,62"!
spécifie le type d ’encodage du texte
"[PO YHUVLRQ HQFRGLQJ 87)VWDQGDORQH \HV"!
le document est standalone :
il n ’a pas de DTD cependant le balisage doit être équilibré
■ Les instructions de traitements
• instructions destinées aux applications qui traiteront le
document
"DSSOLFDWLRQLQVWUXFWLRQ"!
'LGLHU'RQVH];0/

Exemple avec les feuilles de style


"[POVW\OHVKHHW W\SH WH[W[VOKUHI DUWLFOH[KWPO[VO"!
"[POVW\OHVKHHW W\SH WH[WFVVKUHI DUWLFOHFVV"!

21

La structure d ’un document XML

■ La déclaration du type DOCTYPE


• Référence un fichier contenant la DTD Privé
'2&7<3( JUHHWLQJ 6<67(0KHOORGWG!
'2&7<3( JUHHWLQJ 6<67(0 KWWSZZZP\FRPSFRPGWGVKHOORGWG!
• Référence un fichier contenant la DTD public
'2&7<3(FRPPDQGH38%/,&
<$'(72821/,1(6$'7'GHVFRPPDQGHV)5
KWWSZZZ\DGHWRXIUGWGVFRPPDQGHGWG!
W\SHSURSULpWDLUHPRWFOpVGHVFULSWLRQODQJXH
• Inclusion de la DTD
'2&7<3( JUHHWLQJ >
'LGLHU'RQVH];0/

(/(0(17 JUHHWLQJ 3&'$7$_EU !


(/(0(17 EU (037<!
@!

22
La structure d ’un document XML
La DTD : 'RFXPHQW7\SH 'HILQLWLRQ
■ La déclaration des notations
• identifie un information non-XML (donc non parsé)
127$7,21 J]LS 6<67(0J]LSH[H!
127$7,21 FRPSUHVV 6<67(0FRPSUHVVH[H!
'LGLHU'RQVH];0/

23
La structure d ’un document XML
La DTD : 'RFXPHQW7\SH 'HILQLWLRQ
■ La déclaration des entités
• Entité générale interne
• uniquement utilisé dans le document sous la forme WLWUH
(17,7<WLWUH;0/SRXUOHVQXOV!
• Entité paramêtre interne
• uniquement dans la DTD
(17,7<DWWQDPH QDPH ,'5(48,5('!
• Entité paramêtre externe
• uniquement dans la DTD
(17,7<QRXYHDX6<67(0QRXYHDXW[W!
'LGLHU'RQVH];0/

• Entité générale externe


• uniquement dans la DTD
(17,7<DUFK 38%/,&DUFKLYH]1'$7$J]LS!

24
La structure d ’un document XML
La DTD : 'RFXPHQW7\SH 'HILQLWLRQ
■ La déclaration des éléments
• Contenu Vide
(/(0(17 LGHQW (037<!
• Contenu quelconque
(/(0(17 LGHQW $1<!
• contient une structure XML quelconque (mais équilibrée)
• Contenu éléments fils
(/(0(17 LGHQW ILOVILOV _ILOV _ ILOVILOV" !
• contient des éléments
• régit par un expression régulière
, séquence ; | alternative ; multiplicateur * 0-N ; + 1-N ; ? 0-1
'LGLHU'RQVH];0/

• Contenu mixte
(/(0(17 LGHQW 3&'$7$ !
(/(0(17 LGHQW 3&'$7$_ILOV !

25
La structure d ’un document XML
La DTD : 'RFXPHQW7\SH 'HILQLWLRQ
■ La déclaration des attributs
$77/,67 QRPHOHPHQW
QRPDWWULEXW W\SHGpIDXW
QRPDWWULEXW W\SHGpIDXW

!
■ Défaut
,03/,(' Optionnel
5(48,5(' Obligatoire
),;('
YDOHXU
Fixé à la valeur
'LGLHU'RQVH];0/


YDOHXU
Valeur par défaut

26
La structure d ’un document XML
La DTD : 'RFXPHQW7\SH 'HILQLWLRQ
■ Types d’attribut (i)
• Types chaîne de caractères &'$7$
$77/,67GRVVLHU FKHPLQ&'$7$,03/,('!
• Type Prédéfini (17,7<(17,7,(6
• nom (ou liste de noms) d entités non XML précédemment déclarées
• Type Prédéfini 1072.(11072.(16
• nom (ou liste de noms) de mots clé
$77/,67ILFKLHU [POODQJ 1072.(15(48,5('
IU
!
• Valeurs énumérées
$77/,67DUFKLYHFRGDJH127$7,21 J]LS_FRPSUHVV 5(48,5('!
'LGLHU'RQVH];0/

$77/,67DUFKLYHFRGDJH J]LS_FRPSUHVV
J]LS
!

27
Exercice
Donnez la DTD de ce document recette
"[PO YHUVLRQ  HQFRGLQJ ,62"!
'2&7<3(UHFHWWH6<67(0KWWSZZZFRRNRUJGWGVUHFHWWHGWG!
UHFHWWH WLWUH Flan de chez ta mèreDXWHXU Didier Donsez!
LQJUHGLHQWV!
LQJUHGLHQW PHVXUH 6!oeufLQJUHGLHQW!
LQJUHGLHQWPHVXUH 6 XQLWH tasse à café!laitLQJUHGLHQW!
LQJUHGLHQW PHVXUH 6 XQLWH cuillère à soupe!sucreLQJUHGLHQW!
LQJUHGLHQW PHVXUH 1XQLWH zeste!citronLQJUHGLHQW!
LQJUHGLHQWV!
LQVWUXFWLRQV!
LQVWUXFWLRQ!mélanger et battre au fouet tous les ingrédientsLQVWUXFWLRQ!
LQVWUXFWLRQ!caraméliser le fond et les parois du mouleLQVWUXFWLRQ!
LQVWUXFWLRQ!verser dans le mouleLQVWUXFWLRQ!
FXLVVRQPRGH bain maire au fourWHPSHUDWXUH 160°CGXUHH 40 minutes!
LQVWUXFWLRQ!sortir du four et laisser refroidir au réfrigérateur 6 heuresLQVWUXFWLRQ!
'LGLHU'RQVH];0/

LQVWUXFWLRQV!
UHPDUTXH!Rentre chez ta mère, elle t' a fait un flan !UHPDUTXH!
UHFHWWH!

28

Réponse : la DTD recette.dtd


(/(0(17UHFHWWH LQJUHGLHQWVLQVWUXFWLRQVUHPDUTXH" !
(/(0(17 LQJUHGLHQWV LQJUHGLHQW !
(/(0(17LQVWUXFWLRQV LQVWUXFWLRQ_FXLVVRQ !
(/(0(17 LQJUHGLHQW 3&'$7$ !
(/(0(17LQVWUXFWLRQ 3&'$7$ !
(/(0(17FXLVVRQ(037<!
(/(0(17UHPDUTXH 3&'$7$ !
$77/,67UHFHWWH
WLWUH&'$7$5(48,5('
DXWHXU&'$7$,03/,('!
$77/,67 LQJUHGLHQW
PHVXUH&'$7$5(48,5('
XQLWH &'$7$
XQLWH¶!
'LGLHU'RQVH];0/

$77/,67FXLVVRQ
PRGH&'$7$5(48,5('
WHPSHUDWXUH &'$7$5(48,5('
GXUHH &'$7$5(48,5('!

29
La structure d ’un document XML
La DTD : 'RFXPHQW7\SH 'HILQLWLRQ
■ Types d’attribut (ii)
• Type Prédéfini ,'
• Identifiant unique dans le document
$77/,67GRVVLHU UHIHUHQFH,'5(48,5('!
• Type Prédéfini ,'5(),'5()6
• référence (ou liste de réf) d ’identifiants ID du document
$77/,67ILFKLHU GRVVLHU,'5()5(48,5('!
'LGLHU'RQVH];0/

30

Exercice

1. Modifiez le document recette pour que les


instructions référencent les éléments ingrédients
2. Donnez ensuite la nouvelle DTD
'LGLHU'RQVH];0/

31

Réponse 1 : le nouveau document


"[PO YHUVLRQ  HQFRGLQJ ,62"!
'2&7<3(UHFHWWH6<67(0KWWSZZZFRRNRUJGWGVUHFHWWHGWG!
UHFHWWH WLWUH Flan de chez ta mèreDXWHXU Didier Donsez!
LQJUHGLHQWV!
LQJUHGLHQW LGHQW LPHVXUH 6!oeufLQJUHGLHQW!
LQJUHGLHQWLGHQW LPHVXUH 6 XQLWH tasse à café!laitLQJUHGLHQW!
LQJUHGLHQW LGHQW LPHVXUH 6 XQLWH cuillère à soupe!sucreLQJUHGLHQW!
LQJUHGLHQW LGHQW LPHVXUH 1XQLWH zeste!citronLQJUHGLHQW!
LQJUHGLHQWV!
LQVWUXFWLRQV!
LQVWUXFWLRQLGHQWV LLLL!mélanger et battre au fouet tous les
ingrédientsLQVWUXFWLRQ!
LQVWUXFWLRQLGHQWV L!caraméliser le fond et les parois du mouleLQVWUXFWLRQ!
LQVWUXFWLRQ!verser dans le mouleLQVWUXFWLRQ!
FXLVVRQPRGH bain maire au fourWHPSHUDWXUH 160°CGXUHH 40 minutes!
'LGLHU'RQVH];0/

LQVWUXFWLRQ!sortir du four et laisser refroidir au réfrigérateur 6 heuresLQVWUXFWLRQ!


LQVWUXFWLRQV!
UHPDUTXH!Rentre chez ta mère, elle t' a fait un flan !UHPDUTXH!
UHFHWWH!

32

Réponse 2 : la nouvelle DTD recette.dtd

«
$77/,67 LQJUHGLHQW
PHVXUH&'$7$5(48,5('
XQLWH &'$7$
XQLWH

LGHQW ,' 5(48,5('


!
$77/,67LQVWUXFWLRQ
LGHQWV ,'5()6 ,03/,('
!
«
'LGLHU'RQVH];0/

33
Exercice
Donnez la DTD et les éléments de ce graphe

$OLFH %RE &DU\ 'DQLHO


'HODSODFH 'XSRQW 'HODWRXU 'XUDQW
   

(OLVD *ORULD )UHG +HQUL


'XSRQW 'XSRQW 'XUDQW 'XUDQW
   
'LGLHU'RQVH];0/

,QqV -HDQ .pYLQ /DXUD


'XUDQW 'XUDQW 'XUDQW 0DUWLQ
   

34
La structure d ’un document XML
La DTD : 'RFXPHQW7\SH 'HILQLWLRQ
■ Les sections conditionnelles
• versions alternatives de structures dans un même DTD
>GHYHORSSHPHQW> (/(0(17GRVVLHU$1<! @@!
>ILQDO> (/(0(17GRVVLHU ILFKLHU _DUFKLYH ! @@!
• dépend de la déclaration d ’entités
(17,7<GHYHORSSHPHQW
,1&/8'(
!
(17,7<ILQDO
,*125(
!
>,1&/8'(> (/(0(17GRVVLHU$1<! @@!
>,*125(> (/(0(17GRVVLHU ILFKLHU _DUFKLYH ! @@!

(17,7<GHYHORSSHPHQW
,*125(
!
'LGLHU'RQVH];0/

(17,7<ILQDO
,1&/8'(
!
>,*125(> (/(0(17GRVVLHU$1<! @@!
>,1&/8'(> (/(0(17GRVVLHU ILFKLHU _DUFKLYH ! @@!

35
La structure d ’un document XML
La DTD : 'RFXPHQW7\SH 'HILQLWLRQ
■ La gestion des espaces
• permet de préserver les espaces pour la présentation de
l ’élément
$77/,67ILFKLHU
[POVSDFH GHIDXOW_SUHVHUYH  ·SUHVHUYH

!
■ L ’identification de la langue
• déclare la langue utilisé dans le contenu de l ’élément
$77/,67ILFKLHU
[POODQJ 1072.(1),;('
IU

!
'LGLHU'RQVH];0/

$77/,67ILOH
[POODQJ 1072.(1),;('
HQ*%

!

36

La structure d ’un document XML

■ Les éléments balisés (tags) et leurs attributs


GRVVLHULG FKHPLQ F?GRF?FRPSWDEOH!
ILFKLHUQRP FRPPDQGHW[W!
GHVFKLIIUHVSRXUODFRPPDQGHGXOLYUH OW WLWUH JW
ILFKLHU!
ILFKLHUQRP FRPPDQGHW[W!
G ·DXWUHVFKLIIUHV
ILFKLHU!
DOLDVUHI !
GRVVLHU!
■ Les références aux entités et aux caractères
'LGLHU'RQVH];0/

OW WLWUH JW


■ Les sections CDATA (non parsés)
>&'$7$>GDQVOHFKDSvWUHVXU"[PO YHUVLRQ "!@@!

37

SDD : Standalone Document Declaration

■ Omission de la DTD
• même si le document n ’appartient à aucun type de document
• il doit néanmoins être bien formé
• équilibrage des start tags et end tags
• et le tag <emptyelement/> pour les éléments vides
■ Exemple
<?xml version="1.0" standalone="yes"?>
<conversation>
<greeting>Hello, world!</greeting>
<response>
&gt;Stop the planet <pic src="earth"/>,
'LGLHU'RQVH];0/

I want to get off!&lt;


</response>
</conversation>

38

XML NameSpaces

■ Collection d ’identificateurs (élément ou attribut)


• identifié par un préfixe et une URI
■ Déclaration
<element xmlns:prefixe=URI>
• Exemple
<html xmlns=’http://www.w3.org/TR/REC-html40’
xmlns:order=’http://www.mycomp.com/order-spec’>
• le premier namespace (html) est celui par défaut
'LGLHU'RQVH];0/

39

XML NameSpaces

<?xml version="1.0"?>
<html xmlns=’http://www.w3.org/TR/REC-html40’
xmlns:order=’http://www.mycomp.com/order-spec’>
<table border="1">
<th>Gencod</th><th>Quantity</th>
<tr> <td> <order:gencod>14255637</order:gencod></td>
<td> <order:quantity order:value="10"/></td> </tr>
<tr> <td> <order:gencod>84975388</order:gencod></td>
<td> <order:quantity order:value="20"/></td> </tr>
'LGLHU'RQVH];0/

</table>
</html>

40

XML NameSpaces

■ Déclaration dans une DTD


• le namespace est déclaré comme une constante
<!ELEMENT order:gencod (#PCDATA)>
<!ATTLIST order:gencod
xmlns:order CDATA #FIXED "http://www.mycomp.com/order-spec">
>
'LGLHU'RQVH];0/

41

Portée d ’un NameSpaces

• Un autre déclation de nom de domaine remplace le préédent


dans les éléments inclus et ses descendants
■ Exemple
<?xml version="1.0"?>
<bk:book xmlns:bk=’urn:loc.gov:books’
xmlns:isbn=’urn:ISBN:0-395-36341-6’>
<bk:title>Cheaper by the Dozen</bk:title>
<isbn:number>1568491379</isbn:number>
</bk:book>
'LGLHU'RQVH];0/

42

XML Catalog

■ Catalogue de DTD Publiques


'LGLHU'RQVH];0/

43
XML Schema
le remplacant de la DTD
■ Limite des DTD
• description limité des documents structures
• pas de typage des PCDATA
• Limite
• exprimé dans un langage autre XML
• autre parser, ...
■ Objectif de XML Schema
• Amélioration du typage : xsi
• données obéïssant à une expression régulière
'LGLHU'RQVH];0/

• Amélioration de la structure : xsd


• nombre borné d ’éléments inclus, ...
■ Remplace de plus en plus la DTD

44

Les 2 parties de XML Schema

■ Datatype (Partie 2)
• définit un riche ensemble de types prédéfinies
• incluant celui des langages de SGBD, ...
■ Structure (Partie 1)
• définit la construction de types (dit archetype)
• simples ou complexes
• nommés ou anonymes
• mécanismes d ’héritage (refinable archetype)
• support pour les namespaces
'LGLHU'RQVH];0/

• validation de documents utilisant plusieurs namespaces



45

XML Schema - XSI

■ Types primitifs
HOHPHQWQDPH SULFH W\SH IORDW!
HOHPHQWQDPH JUHHWLQJ W\SH [VGVWULQJ!
SULFH!SULFH!
JUHHWLQJ LG LG!+HOORJUHHWLQJ!
■ Structures
HOHPHQWQDPH %RRN!
FRPSOH[7\SH!
HOHPHQWQDPH DXWKRU W\SH [VGVWULQJ!
HOHPHQWQDPH WLWOH W\SH [VGVWULQJ!
FRPSOH[7\SH!
HOHPHQW!
'LGLHU'RQVH];0/

H%RRN!
DXWKRU!-557RONLHQDXWKRU!
WLWOH!$KREELW VWRU\WLWOH!
H%RRN!

46

XML Schema - XSI

■ Enumération
<element name="color">
<simpleType base="xsd:string">
<enumeration value="Green"/>
<enumeration value="Blue"/>
</simpleType>
</element>
<color>Blue</color>
'LGLHU'RQVH];0/
L’outillage XML

56

L’outillage XML

■ XPath
■ XQuery
■ XSL

■ APIs d’analyse et de construction


'LGLHU'RQVH];0/

57

XPath

■ Recommandation du W3C
■ Expression de désignation d’un nœud dans un document
XML
• syntaxe simple et non ambiguë
• type usuels: chaînes, nombres, booléens, variables, fonctions
• spécifie une bibliothèque de fonctions extensible
• position(), …
■ Exemples
• FKDSWHU>#W\SH ZDUQLQJ@
• S>SRVLWLRQ @
'LGLHU'RQVH];0/

■ Utilisé par XPointer et XSLT


■ Implémentation
• Package Xpath org.apache.xalan.xpath

58

Expressions XPath (i)

/ parenté
VHFWLRQSDUDJUDSKH désigne les <SDUDJUDSKH> fils des <VHFWLRQ> de l ’élément courant.
// parenté étendu aux aïeux
. nœud courant
.. père du nœud courant
| alternative
@zzz attribut zzz du nœud courant
text() nœuds CDATA fils du nœud courant
comment() nœuds commentaires fils du nœud courant
'LGLHU'RQVH];0/

pi() instructions de traitement du nœud courant


id() sélection sur identifiant ou liste d ’identifiants

59

Expressions XPath (ii)

■ Condition de sélection [ ]
• VHFWLRQ>#WLWUH@ <section> qui ont un attribut titre
• VHFWLRQ>SDUDJUDSKH@ <section> qui ont au moins un fils <paragraphe>
• VHFWLRQ>#WLWUH
,QWURGXFWLRQ
@ <section> qui ont un attribut titre dont la
valeur est "Introduction"
• VHFWLRQ>SDUDJUDSKH
,QWURGXFWLRQ
@ <section> qui ont au moins un fils
<paragraphe> dont la valeur est "Introduction"
■ Positionnement
• position()=5 vrai si l’élément est à la 5ème position
• ILUVWRIDQ\ vrai si l ’élément est le premier fils
ODVWRIDQ\ vrai si l ’élément est le dernier fils
'LGLHU'RQVH];0/


• ILUVWRIW\SH vrai si l ’élément est le premier fils de son type
• ILVUWRIW\SH vrai si l ’élément est le dernier fils de son type

60

Expressions XPath (iii)

■ Connecteurs logiques (not,and,or)


• VHFWLRQ>QRW #WLWUH @ <section> qui n ’ont pas d ’attribut titre
• VHFWLRQSDUDJUDSKH>ILUVWRIW\SH DQGODVWRIW\SH @
<paragraphe> qui sont fils unique !
'LGLHU'RQVH];0/

61
Exemple de recherche Xpath
avec Xalan
LPSRUW«
SXEOLFFODVV $SSO\;3DWK ^YRLU [DODQVDPSOHV$SSO\;3DWK
SXEOLF VWDWLFYRLG PDLQ 6WULQJ>@ DUJV ^ WU\ ^
6WULQJ ILOHQDPH DUJV>@
6WULQJ [SDWK DUJV>@ H[HPSOHSHRSOHVSHRSOH>@QDPH#ODVW
,QSXW6RXUFHLQ QHZ ,QSXW6RXUFH QHZ )LOH,QSXW6WUHDP ILOHQDPH 
'203DUVHU SDUVHU QHZ'203DUVHU 
SDUVHUSDUVH LQ 
1RGHURRW SDUVHUJHW'RFXPHQW JHW'RFXPHQW(OHPHQW 
1RGH/LVWQO ;3DWK$3,VHOHFW1RGH/LVW URRW [SDWK 
)RUPDWWHU7R;0/IO QHZ )RUPDWWHU7R;0/ 6\VWHPRXW 
7UHH:DONHUWZ QHZ 7UHH:DONHU IO 
'LGLHU'RQVH];0/

IRU LQW L L QOJHW/HQJWK L ^


WZWUDYHUVH QOLWHP L IOIOXVK IOIOXVK:ULWHU 
`
`FDWFK ([FHSWLRQH ^HSULQW6WDFN7UDFH UHWXUQ```

62
Xquery
KWWSZZZZRUJ75[TXHU\
■ Motivation
• Étendre la désignation XPath 1.0
• Namespace
dc:Creator tous les éléments <Creator> appartenant au namespace dc:
chapter/@li:title : l ’ attribut title de préfixe li des éléments <chapter>
• Collections d ’ attributs
@* : tous les attributs de l ’ élément courant
@li:* : tous les attributs de l ’ élément courant identifiés par le préfixe li
• Comparaisons complexes
• Opérateurs any et all
• …
• Construction de documents (alternative et complément à XSLT)
'LGLHU'RQVH];0/

■ Principe
• Langage fonctionnel semblable à SQL, OQL, …

63

Exemple XQuery
ELE!
ERRN \HDU !
WLWOH!7&3,3 ,OOXVWUDWHGWLWOH!
DXWKRU!ODVW!6WHYHQVODVW!ILUVW!:ILUVW!DXWKRU!
SXEOLVKHU!$GGLVRQ:HVOH\SXEOLVKHU!
SULFH!SULFH!
ERRN!
ERRN \HDU !
WLWOH!$GYDQFHG3URJUDPPLQJ LQ WKH 8QL[ HQYLURQPHQWWLWOH!
DXWKRU!ODVW!6WHYHQVODVW!ILUVW!:ILUVW!DXWKRU!
SXEOLVKHU!$GGLVRQ:HVOH\SXEOLVKHU!
SULFH!SULFH!
ERRN!
ERRN \HDU !
WLWOH!'DWDRQ WKH:HEWLWOH!
'LGLHU'RQVH];0/

DXWKRU!ODVW!$ELWHERXOODVW!ILUVW!6HUJHILUVW!DXWKRU!
DXWKRU!ODVW!%XQHPDQODVW!ILUVW!3HWHUILUVW!DXWKRU!
DXWKRU!ODVW!6XFLXODVW!ILUVW!'DQILUVW!DXWKRU!
ERRN!
ELE!

64
Exemple Xquery
Recherche étendue
document("bib.xml")//book[
some $l in ./author/last satisfies string(data($l)) = "Stevens"]
'LGLHU'RQVH];0/

65
Exemple Xquery
Construction d’éléments
UHVXOWV! UHVXOWV!
^ ERRN DXWKRU&RXQW !
IRUERRNLQERRN DXWKRU!6WHYHQVDXWKRU!
OHWDXWKRUV  ERRNDXWKRU ERRN!
UHWXUQ ERRN DXWKRU&RXQW !
ERRNDXWKRU&RXQW DXWKRU!6WHYHQVDXWKRU!
^FRXQW DXWKRUV `! ERRN!
^ ERRN DXWKRU&RXQW !
IRUDXWKRU LQDXWKRUV DXWKRU!$ELWHERXODXWKRU!
UHWXUQ DXWKRU!%XQHPDQDXWKRU!
DXWKRU! DXWKRU!6XFLXDXWKRU!
^DXWKRUODVWWH[W ` ERRN!
DXWKRU! 
'LGLHU'RQVH];0/

` UHVXOWV!
ERRN!
`
UHVXOWV!

68

eXtensible Linking Language, XLL

■ Limite des références (URL) en HTML


• ne référence qu ’ un seul document
• granularité grosse de référence : le document
• accèdes au 3ème paragraphe qui suit le chapitre nommé "Introduction"
• pas de relations entre les documents.
• référence à sens unique.
■ Les 2 parties de XLL
• Xlink : XML Linking Specification
'LGLHU'RQVH];0/

• XPointer : XML Extended Pointer Specification



69
Xpointer
XML Extended Pointer Specification
• adresse des objets internes à la structure du document et ne
possédant pas d ’ identifiant

• Utilise les expressions Xpath

• Exemple
KWWSZZZXFFLH[POIDTVJPO,' IDTK\SHUWH[W &+,/'  
• désigne le 6ème objet inclus dans le 2ème objet inclus dans l ’ élément
ayant un ID égale « faq-hypertext ».
■ A lire
'LGLHU'RQVH];0/

• 5HFRPPDQGDWLRQ;3RLQWHU GX:&HWOH&KDSLWUHGH© ;0/%LEOH ª



70
Xpointer
XML Extended Pointer Specification
• Exemple
KWWSZZZDGHOHLPDJIUaGRQVH]H[HPSOHFRXUV[PO[PO
– ,QWURGXFWLRQ
– [SRLQWHU LG ,QWURGXFWLRQ 
– [SRLQWHU FKDSLWUH>@S>@ 
– [SRLQWHU FKDSLWUH>WLWUH ,QWURGXFWLRQ@
GHVFHQGDQWS>SRVLWLRQ ODVW @ 
– [SRLQWHU LG VHF S>@WRLG VHF S>ODVW @ 
– [SRLQWHU VWULQJUDQJH WLWOH&RXUV ;0/ 
'LGLHU'RQVH];0/

71

XLink : XML Linking Specification

■ spécifie les hyperliens dans un document XML


• liens simples, type <A href="...">
• liens étendus: multisource, multicible, externes

• multi-direction, multi-cible, indépendance à la localisation (en cas de


changement de place du document), transclusion (document inclus), liens
typés (attributs de lien).
'LGLHU'RQVH];0/

■ A lire
• 5HFRPPDQGDWLRQ;/LQN GX:&HWOH&KDSLWUHGH© ;0/%LEOH ª

72

XLink : XML Linking Specification


■ un lien simple:
<students xlink:href="students.xml"> The list of students.</students>
■ un lien étendu:
<element xmlns:xlink="http://www.w3.org/1999/xlink/namespace/"
xlink:type="extended">
<xlink:locator href="Source" role="role1"/>
<xlink:locator href="Target" role="role2"/>
<xlink:arc from="role1" to="role2" show="embed" actuate="auto"/>
<xlink:title>The link title<xlink:title/>
<xlink:title xml:lang="fr">Description du lien<xlink:title/>
...
</element>
■ Annotations:
<xlink:extended xmlns:xlink="http://www.w3.org/1999/xlink/namespace/"
'LGLHU'RQVH];0/

role="xlink:external-linkset">
<xlink:title>DV’s Links</xlink:title>
<xlink:locator href="http://rpmfind.net/veillard/linkset.xml"/>
</xlink:extended>

73

Xinclude KWWSZZZZRUJ75[LQFOXGH

■ Inclusion de documents lors de l’analyse


• Modularité, réutilisabilité …
■ Exemple
VXEW[W
6HQWHQFH
VXE[PO
"[PO YHUVLRQ

"!
FKDSWHU!
S!6HQWHQFH6HQWHQFHS!
S!L!6HQWHQFH6HQWHQFHL!6HQWHQFHS!
FKDSWHU!
GRF[PO
"[PO YHUVLRQ

"!
GRFXPHQW [POQV[L KWWSZZZZRUJ;,QFOXGH!
S!7KH WH[WHGRFXPHQW FRQWDLQV S!
'LGLHU'RQVH];0/

SUH!
[LLQFOXGHKUHI VXEW[W SDUVH WH[W!
SUH!
S! 7KH ;0/GRFXPHQW FRQWDLQV S!
[LLQFOXGHKUHI VXE[PO[SRLQWHU FKDSWHUS>@ !
GRFXPHQW!

74

eXtensible Stylesheet Language, XSL

■ Définition de feuilles de style


• Basé sur ISO/IEC 10179 DSSSL
• Document Style Semantics and Specification Language
■ Fonctionnalités proposées
• fonctions simples
• ré-ordonnancement des éléments
• formatage des éléments en fonction de leur position, de leur unicité ou par
rapport aux éléments parents et à leur descendance.
• formatage incluant des textes et des graphiques,
• macros de formatage réutilisables
• …
'LGLHU'RQVH];0/

■ 2 parties
• XSL-T Transformation (de XML vers XML >;+70/:0/69*«@)
• XSL-FO Formatting Object (de XML vers non-XML >363')57)«@)

75

XSLT - XSL Transformation

■ Motivations
• appliquer des transformations à un document XML
• ré-ordonnancement des éléments, masquage d ’ éléments, ...
• vers un autre document XML
• HQJpQpUDOYLVXDOLVDEOHFRPPH;+70/:0/69*950/60,/«
■ Avantage
• un document XML peut être subir des transformations
différentes
'LGLHU'RQVH];0/

76

Remarques sur XSLT

■ Remarque sur la maturité :


• Attention :les transformateurs n’ implantent pas toujours
XSLT complètement et ajoutent de plus des fonctionnalités et
des éléments supplémentaires.
• XALAN autorise l’ appel à des « fonctions » Java
■ Remarque à propos des CSS :
• quand la cible est du HTML4/XHTML1,
XSLT doit être utilisé de manière combiné avec les CSS
■ Remarque à propos du formatage :
'LGLHU'RQVH];0/

• XSLT peut être utilisé comme étape dans le formatage vers


des documents non-XML 57):RUG3RVW6FULSW3')/D7H[«
voir FOP (Formatting Object processor)

77

Principe de la transformation de XSLT

■ Appel à la transformation
• instruction de traitement dans le document source XML
"[POVW\OHVKHHW W\SH WH[W[VO KUHI DUWLFOH[KWPO[VO"!
■ La feuille de style xsl:stylesheet
• liste ordonnée de WHPSODWHV xsl:template qui sont appliqués aux
nœuds de l ’ arbre source
■ Un template xsl:template
• sous arbre du document de sortie comportant des éléments de
DTD de sortie et des éléments xsl:
■ Règle xsl:template
'LGLHU'RQVH];0/

• détermine si le template est applicable à un nœud de l ’ arbre


source

78

Un exemple de transformation XSLT

■ 6RLWXQGRFXPHQWVRXUFH;0/ Instruction de
traitement
<?xml version="1.0"?>
<!DOCTYPE sales SYSTEM "sales.dtd">
<?xml-stylesheet type="text/xsl" href= "sales2html.xsl"?>
<sales>
<division id="North">
<revenue>10</revenue><growth>9</growth><bonus>7</bonus>
</division>
<division id="South">
<revenue>4</revenue><growth>3</growth><bonus>4</bonus>
</division>
'LGLHU'RQVH];0/

<division id="West">
<revenue>6</revenue><growth>-1.5</growth><bonus>2</bonus>
</division>
</sales>

79
Un exemple de transformation XSLT
pour une sortie HTML SRXU,(
[VOVW\OHVKHHW[POQV[VO KWWSZZZZRUJ75:'[VO!
[VOWHPSODWH PDWFK !
KWPO!KHDG!WLWOH!6DOHV 5HVXOWV %\'LYLVLRQWLWOH!KHDG!ERG\!
élément root
[VODSSO\WHPSODWHV!
ERG\!KWPO! Appliqué les templates aux
[VOWHPSODWH! sous-arbres
[VOWHPSODWH PDWFK VDOHV!
WDEOHERUGHU ! élément(s) sales
WU!WK!'LYLVLRQWK!WK!5HYHQXHWK!WK!*URZWKWK!WK!%RQXVWK!WU!
[VODSSO\WHPSODWHV VHOHFW GLYLVLRQ!
WDEOH!
[VOWHPSODWH!
[VOWHPSODWHPDWFK VDOHVGLYLVLRQ! élément(s) division
WU!WG!HP![VOYDOXHRIVHOHFW #LG!HP!WG!WG![VOYDOXHRIVHOHFW UHYHQXH!WG!
'LGLHU'RQVH];0/

WG![VOYDOXHRIVHOHFW JURZWK!WG!WG![VOYDOXHRIVHOHFW ERQXV!WG!


WU!
[VOWHPSODWH!
[VOWHPSODWH PDWFK  ![VODSSO\WHPSODWHV![VOWHPSODWH!
tout élément
[VOVW\OHVKHHW!

80
Un autre exemple de transformation
XSLT pour une sortie HTML
KWPO
[VOYHUVLRQ  [POQV[VO KWWSZZZZRUJ;6/7UDQVIRUP!
KHDG!WLWOH!6DOHV 5HVXOWV %\'LYLVLRQWLWOH!KHDG!ERG\!
WDEOHERUGHU !
WU!WK!'LYLVLRQWK!WK!5HYHQXHWK!WK!*URZWKWK!WK!%RQXVWK!WU!
[VOIRUHDFK VHOHFW VDOHVGLYLVLRQ! RUGHUWKHUHVXOW E\UHYHQXH!
[VOVRUWVHOHFW UHYHQXHGDWDW\SH QXPEHURUGHU GHVFHQGLQJ!
WU!WG!HP![VOYDOXHRIVHOHFW #LG!HP!WG!
WG![VOYDOXHRIVHOHFW UHYHQXH!WG!
WG![VOLIWHVW JURZWK OW! KLJKOLJKWQHJDWLYHJURZWK LQ UHG !
[VODWWULEXWHQDPH VW\OH![VOWH[W!FRORUUHG[VOWH[W![VODWWULEXWH
[VOLI!
[VOYDOXHRIVHOHFW JURZWK!
WG!
'LGLHU'RQVH];0/

WG![VOYDOXHRIVHOHFW ERQXV!WG!
WU!
[VOIRUHDFK!
WDEOH!
ERG\!KWPO!

81
Le résultat de la transformation
vers HTML
KWPO!
KHDG!WLWOH!6DOHV 5HVXOWV %\'LYLVLRQWLWOH!KHDG!
ERG\!
WDEOHERUGHU !
WU!WK!'LYLVLRQWK!WK!5HYHQXHWK!WK!*URZWKWK!WK!%RQXVWK!WU!
WU!WG!HP!1RUWKHP!WG!WG!WG!WG!WG!WG!WG!WU!
WU!WG!HP!:HVWHP!WG!WG!WG!WG VW\OH FRORUUHG!WG!WG!WG!WU!
WU!WG!HP!6RXWKHP!WG!WG!WG!WG!WG!WG!WG!WU!
WDEOH!
ERG\!KWPO!
'LGLHU'RQVH];0/

82
Un exemple de transformation XSLT
pour une sortie SVG
[VOVW\OHVKHHW YHUVLRQ  [POQV[VO KWWSZZZZRUJ;6/7UDQVIRUP
[POQV KWWSZZZZRUJ*UDSKLFV69*69*GWG!
[VORXWSXW PHWKRG [PO LQGHQW \HVPHGLDW\SH LPDJHVYJ!
[VOWHPSODWH PDWFK !
VYJZLGWK LQ KHLJKW LQ!
JVW\OH VWURNH!
OLQH[ [ \ \ !OLQH[ [ \ \ !
WH[W [ \ !5HYHQXHWH[W!WH[W [ \ !'LYLVLRQWH[W!
[VOIRUHDFK VHOHFW VDOHVGLYLVLRQ!
[VOYDULDEOH QDPH SRVVHOHFW  SRVLWLRQ  ! WKHEDU
V[SRVLWLRQ!
[VOYDULDEOHQDPH KHLJKWVHOHFW UHYHQXH ! WKHEDU
VKHLJKW !
UHFW [ ^SRV`\ ^KHLJKW` ZLGWK  KHLJKW ^KHLJKW`!
WH[W [ ^SRV`\ ![VOYDOXHRIVHOHFW #LG!WH[W!
'LGLHU'RQVH];0/

WH[W [ ^SRV`\ ^KHLJKW`![VOYDOXHRIVHOHFW UHYHQXH!WH[W!


[VOIRUHDFK!
J!VYJ!
[VOWHPSODWH![VOVW\OHVKHHW!

83
Le résultat de la transformation
vers HTML
VYJZLGWK LQ KHLJKW LQ ª
[POQV KWWSZZZZRUJ*UDSKLFV69*VYJGWG!
JVW\OH VWURNH!
OLQH[ [ \ \ !
OLQH[ [ \ \ !
WH[W [ \ !5HYHQXHWH[W!
WH[W [ \ !'LYLVLRQWH[W!
UHFW [ \  ZLGWK  KHLJKW !
WH[W [ \ !1RUWKWH[W!
WH[W [ \ !WH[W!
UHFW [ \  ZLGWK  KHLJKW !
WH[W [ \ !6RXWKWH[W!
WH[W [ \ !WH[W!
UHFW [ \  ZLGWK  KHLJKW !
'LGLHU'RQVH];0/

WH[W [ \ !:HVWWH[W!


WH[W [ \ !WH[W!
J!
VYJ!

84

Un exemple de document XML


"[PO YHUVLRQ  HQFRGLQJ 87)"!
'2&7<3(WDEOH>
(/(0(17 WDEOH WDEOH_URZ !
(/(0(17 URZ WDEOH_FRO  !
(/(0(17 FRO 3&'$7$ !
$77/,67 URZ_FRO QDPH &'$7$5(48,5('!
@!
"[POVW\OHVKHHW W\SH WH[W[VO KUHI WDEOHKWPO[VO"!
WDEOH!
URZ! FRO QDPH GLYLVLRQ!1RUGFRO!FRO QDPH UHYHQXH!FRO!URZ!
URZ! FRO QDPH GLYLVLRQ!6XGFRO!FRO QDPH UHYHQXH!FRO!URZ!
URZ! FROQDPH GLYLVLRQ!(VW2XHVWFRO!
WDEOH!
URZ QDPH !FROQDPH UHYHQXH!FRO!URZ!
'LGLHU'RQVH];0/

URZQDPH !!FRO QDPH UHYHQXH!FRO!URZ!


WDEOH!
URZ!
WDEOH!

85

Structure de <xsl:stylesheet>

■ Le document XSLT doit être bien formé


• l ’ élément racine est [VOVW\OHVKHHW
• nom de domaine seul xsl:
[VOVW\OHVKHHW[POQV[VO KWWSZZZZRUJ;6/7UDQVIRUP!
«[VOVW\OHVKHHW!
• avec d ’ autres noms de domaine (ici par défaut HTML)
[VOVW\OHVKHHW[POQV[VO KWWSZZZZRUJ;6/7UDQVIRUP
[POQV KWWSZZZZRUJ755(&KWPO
UHVXOWQV !
«[VOVW\OHVKHHW!
'LGLHU'RQVH];0/

■ Remarque pour IE5.0


• L ’espace de nommage est [POQV[VO KWWSZZZZRUJ75:'[VO

86

Les éléments de <xsl:stylesheet>

■ <xsl:template match="…"></xsl:template>
• règle de transformation
■ <xsl:import href="…"/>
• importe des feuilles de style XSL
■ <xsl:include href="…"/>
• inclut des éléments XSL dans la feuille de style XSL
■ <xsl:output method="PHWKRG"/>
• définit le format de la sortie. PHWKRG peut être xml, html, text
■ <xsl:macro name="…">...</xsl:macro >
'LGLHU'RQVH];0/

• définit une macro-instruction (groupe d ’ éléments réutilisables)



87
Règles de transformation explicites
ou 7HPSODWH 5XOHV <xsl:template>
■ Propriété match (REQUIRED)
• la règle ne s ’ applique qu ’ aux éléments
vérifiant le pattern défini par la valeur
• Exemples
[VOWHPSODWH PDWFK !
[VOWHPSODWH PDWFK WDEOH!
[VOWHPSODWH PDWFK WDEOHFRPPHQW !
[VOWHPSODWH PDWFK WDEOH!
[VOWHPSODWH PDWFK WDEOH>QRW URZ @!
[VOWHPSODWH PDWFK URZFRO!
[VOWHPSODWH PDWFK WDEOH FRO!
'LGLHU'RQVH];0/

88
Eléments des règles de transformation
<xsl:template match="XX">
■ <xsl:apply-templates select="YY">
applique les templates aux fils du nœuds courant, restreint au pattern définit
par la propriété select
■ <xsl:value-of select="YY">
donne la valeur du fils vérifiant le pattern définit par la propriété select
■ {YY}
• idem mais permet d ’ insérer la valeur dans les balises des éléments de
sortie
[VOWHPSODWHQDPH /,1.!
$+5() ^85/`![VOYDOXHRIVHOHFW 6,7(!$!
[VOWHPSODWH!
'LGLHU'RQVH];0/

/,1.6,7( :&85/ KWWSZZZZRUJ!HVWWUDQVIRUPp


$+5() KWWSZZZZRUJ!:&$!

89
Eléments des règles de transformation
<xsl:template match="XX">
■ xsl:element : Insertion d ’élément
• insère un élément dans la sortie dont le nom est une valeur de l ’ entrée
[VOWHPSODWH PDWFK FRO!
[VOHOHPHQWQDPH ^#QDPH`![VOYDOXHRIVHOHFW WH[W ![VOHOHPHQW!
[VOWHPSODWH!
&2/1$0( 6LWH!:&&2/!HVWWUDQVIRUPp 6,7(!:&6,7(!
■ xsl:attribut : Insertion d ’un attribut
• insère un élément dans la sortie dont le nom est une valeur de l ’ entrée
[VOWHPSODWH PDWFK /,1.!
$!
[VODWWULEXWHQDPH +5()![VOYDOXHRIVHOHFW #85/![VODWWULEXWH!
[VOYDOXHRIVHOHFW 6,7(!
$!
'LGLHU'RQVH];0/

[VOWHPSODWH!
/,1.6,7( :&85/ KWWSZZZZRUJ!HVWWUDQVIRUPp
$+5() KWWSZZZZRUJ!:&$!

90
Eléments des règles de transformation
<xsl:template match="XX">
■ xsl:attribut-set : Insertion d ’un ensemble d ’attributs
[VODWWULEXWHVHWQDPH IRQWDWW!
[VODWWULEXWHQDPH IRQWIDPLO\!7LPHV[VODWWULEXWH!
[VODWWULEXWHQDPH IRQWVL]H!SW[VODWWULEXWH!
[VO DWWULEXWHVHW!

[VODWWULEXWHVHW QDPH SDGGLQJDWW!


[VODWWULEXWHQDPH IRQWIDPLO\!SW[VODWWULEXWH!
[VO DWWULEXWHVHW!

[VOWHPSODWH PDWFK &2/!


7'[VOXVHDWWULEXWHVHWV IRQWDWW SDGGLQJDWW![VOYDOXHRIVHOHFW !7'!
[VOWHPSODWH!
'LGLHU'RQVH];0/

Ainsi
&2/1$0( 6LWH!:&&2/!HVWWUDQVIRUPpHQ
7'IRQWIDPLO\ 7LPHVIRQWIDPLO\ SW FHOOSDGGLQJ SW!:&7'!

91
Eléments des règles de transformation
<xsl:template match="XX">
■ <xsl:copy>
• copie le nœud source dans la sortie
[VOWHPSODWH PDWFK URZ!
[VOFRS\!E![VOYDOXHRIVHOHFW !E![VOFRS\!
[VOWHPSODWH!
[VOWHPSODWH PDWFK FRO![VOFRS\![VOWHPSODWH!
■ <xsl:for-each>
• parcourt les nœuds
■ <xsl:choose>
• <xsl:when>
'LGLHU'RQVH];0/

• <xsl:otherwise>
■ <xsl:if test=...>

92
Eléments des règles de transformation
<xsl:template match="XX">
■ <xsl:sort>
• Tri des nœ uds
[VOWHPSODWH PDWFK WDEOH!
WDEOH!
[VODSSO\WHPSODWHV!
[VOVRUW VHOHFW URZFRO>QDPH
,'
@
RUGHU GHVFHQGLQJ
GDWDW\SH QXPEHU
!
[VODSSO\WHPSODWHV!
WDEOH!
'LGLHU'RQVH];0/

[VOWHPSODWH!

93
Eléments des règles de transformation
<xsl:template match="XX">
■ <xsl:number ...>
• Numérotation des nœ uds
• Propriétés : value, from, level, letter-value grouping-separator
grouping-size

[VOWHPSODWH PDWFK URZ!


WG!
[VOQXPEHU YDOXH SRVLWLRQ 
IRUPDW ,
!
WG!
'LGLHU'RQVH];0/

[VODSSO\WHPSODWHV VHOHFW FRO!


[VOWHPSODWH!

94
Eléments des règles de transformation
<xsl:template match="XX">
■ <xsl: counter...>
'LGLHU'RQVH];0/

95
Définition de constantes
<xsl:variable name="XX">
■ Permet de définir des constantes

[VOYDULDEOH QDPH FRS\ULJKW!


&RS\ULJKW'LGLHU'216(=
[VOYDULDEOH!

[VOYDULDEOH QDPH XYKF!


8QLYHUVLWpGH9DOHQFLHQQHVHWGX+DLQDXW&DPEUpVLV
[VOYDULDEOH!

[VOWHPSODWH !
'LGLHU'RQVH];0/

%/2&.&23<5,*+7 ^FRS\ULJKW`!«%/2&.!

+5![VOYDOXHRIVHOHFW FRS\ULJKW![VOYDOXHRIVHOHFW XYKF!


[VOWHPSODWH!

96
Règles de transformation implicites
ou 'HIDXOW7HPSODWH5XOHV
■ Liste des règles implicites
[VOWHPSODWHPDWFK  _![VODSSO\WHPSODWHV![VOWHPSODWH!
• Application des templates aux éléments et à ses descendants
[VOWHPSODWHPDWFK WH[W _# ![VOYDOXHRIVHOHFW ![VOWHPSODWH!
• Copie les nœ uds texte dans le document résultant
[VOWHPSODWH PDWFK SURFHVVLQJLQVWUXFWLRQ _FRPPHQW !
• ne rien faire pour les instructions et les commentaires
■ Application
• Elles sont considérées comme importées
Exemple
"[PO YHUVLRQ "!
[VOVW\OHVKHHW YHUVLRQ  [POQV[VO KWWSZZZZRUJ;6/7UDQVIRUP!
'LGLHU'RQVH];0/

[VOVW\OHVKHHW!
• Elles sont ignorées si une règle qui concerne l ’ élément est définie
■ Remarque: IE5.0 n ’a pas de règles implicites :
• il faut les importer ou les ajouter

97
Règles de transformation explicites
ou 7HPSODWH 5XOHV <xsl:template>
■ Propriété mode (IMPLIED)
• sert à appliquer des règles plusieurs fois à un même nœ ud mais avec des
sorties différentes(règles diffèrentes)
■ Exemple
[VOWHPSODWH PDWFK '2&!
[VODSSO\WHPSODWHV PRGH WRF!KU![VODSSO\WHPSODWHV PRGH WRF!
[VOWHPSODWH!
[VOWHPSODWH PDWFK &+$37(5PRGH WRF!
D KUHI ^#,'`![VOYDOXHRIVHOHFW 7,7/(!D!EU!
[VOWHPSODWH!
[VOWHPSODWH PDWFK &+$37(5PRGH ERG\!
KQDPH ^#,'`!^7,7/(`K![VODSSO\WHPSODWHV PRGH ERG\!
'LGLHU'RQVH];0/

[VOWHPSODWH!
■ Création de la règle implicite
[VOWHPSODWH PDWFK  _PRGH Q![VODSSO\WHPSODWHV PRGH Q![VOWHPSODWH!

98
Règles Nommées
ou 1DPHG7HPSODWH5XOHV
■ Les règles nommées peuvent être utilisées par d ’autres
règles. Elles peuvent avoir aussi des paramètres
■ Exemple (sans paramètre)
[VOWHPSODWH QDPH 0,1,!
IRQWIDFH 7LPHV VHULI FRORU EOXHVL]H !
[VOYDOXHRIVHOHFW !IRQW!
[VOWHPSODWH!

[VOWHPSODWH PDWFK <<!


[VOFDOOWHPSODWHQDPH 0,1,!
[VOWHPSODWH!
'LGLHU'RQVH];0/

[VOWHPSODWH PDWFK ;;!


[VOFDOOWHPSODWHQDPH 0,1,!
[VOWHPSODWH!

99
Règles Nommées
ou 1DPHG7HPSODWH5XOHV
■ Exemple (avec paramètre)
[VOWHPSODWHQDPH 0,1,!
[VOSDUDPQDPH SROLFH!7LPHV[VOSDUDP! YDOHXUSDUGpIDXW!
IRQWIDFH ^SROLFH`VHULI FRORU EOXHVL]H !
[VOYDOXHRIVHOHFW !IRQW!
[VOWHPSODWH!

[VOWHPSODWH PDWFK <<!


[VOFDOOWHPSODWHQDPH 0,1,!
[VOZLWKSDUDPQDPH ILOH!+HOYHWLFD[VOZLWKSDUDP!
[VOFDOOWHPSODWH!
[VOWHPSODWH!
'LGLHU'RQVH];0/

[VOWHPSODWH PDWFK ;;!


[VOFDOOWHPSODWHQDPH 0,1,!
[VOWHPSODWH!

100

Import et inclusion de feuilles de style

■ Import
• peut produire des conflits entre les règles
• précedence à la dernière règle importée donc (définie)

[VOVW\OHVKHHW YHUVLRQ  [POQV[VO KWWSZZZZRUJ;6/7UDQVIRUP!


[VOLPSRUW KUHI FKDUW[VO!
[VOLPSRUW KUHI WDEOH[VO!
 RWKHUFKLOGHOHPHQWVIROORZ !
[VOVW\OHVKHHW!
'LGLHU'RQVH];0/

■ Inclusion
• remplace les règles (même match) de la feuille par ceux de la
feuille incluse

101

Feuille de style nichée

■ La feuille de style XSL est directement nichée dans le


document XML
"[PO YHUVLRQ "!
"[POVW\OHVKHHW W\SH WH[W[PO KUHI LG P\VW\OH "!
7$%/(!
[VOVW\OHVKHHW YHUVLRQ 
[POQV[VO KWWSZZZZRUJ;6/7UDQVIRUPLG P\VW\OH!
[VOWHPSODWH PDWFK !KWPO![VODSSO\WHPSODWHV!KWPO![VOWHPSODWH!
[VOWHPSODWH PDWFK 7$%/(!WDEOH![VODSSO\WHPSODWHV!WDEOH![VOWHPSODWH!
«
[VOWHPSODWH PDWFK [VOVW\OHVKHHW!
Q
DIILFKHSDVODIHXLOOHGHVW\OHHWVHVILOV
'LGLHU'RQVH];0/

[VOVW\OHVKHHW!
52:!&2/1$0( 3URGXFW!&RIIHH&2/!&2/1$0( 3ULFH!&2/!52:!
52:!&2/1$0( 3URGXFW!7HD&2/!&2/1$0( 3ULFH!&2/!52:!
7$%/(!

102

Appel de script depuis une feuille XSLT

■ Appel de fonctions (externes) par le transformateur


• Indépendance du langage (JavaScript, Java, TCL, …)
• Sur XALAN
■ Exemple
"[PO YHUVLRQ "!
GRF!
IRR ILOH IRRRXW!
7HVWLQJ5HGLUHFW H[WHQVLRQ
EDU!$ IRRVXEHOHPHQWWH[WQRGHEDU!
IRR!
PDLQ!(YHU\WKLQJHOVHPDLQ!
'LGLHU'RQVH];0/

GRF!

103

Appel de script depuis une feuille XSLT


[VOVW\OHVKHHW[POQV[VO KWWSZZZZRUJ;6/7UDQVIRUP
YHUVLRQ  [POQVO[VOW KWWS[PODSDFKHRUJ[VOW
[POQVUHGLUHFW RUJDSDFKH[DODQ[VOWH[WHQVLRQV5HGLUHFW
H[WHQVLRQHOHPHQWSUHIL[HV UHGLUHFW!
[VOWHPSODWH PDWFK !
VWDQGDUGRXW!6WDQGDUGRXWSXW[VODSSO\WHPSODWHV!VWDQGDUGRXW!
[VOWHPSODWH!
[VOWHPSODWH PDWFK PDLQ!
PDLQ![VODSSO\WHPSODWHV!PDLQ!
[VOWHPSODWH!
[VOWHPSODWH PDWFK GRFIRR!
UHGLUHFWZULWH VHOHFW #ILOH!
IRRRXW![VODSSO\WHPSODWHV!IRRRXW!
UHGLUHFWZULWH!
'LGLHU'RQVH];0/

[VOWHPSODWH!
[VOWHPSODWH PDWFK EDU!
IRREDURXW![VODSSO\WHPSODWHV!IRREDURXW!
[VOWHPSODWH!
[VOVW\OHVKHHW!

104

Appel de script depuis une feuille XSLT

■ Sortie sur la sortie standard


"[PO YHUVLRQ  HQFRGLQJ 87)"!
VWDQGDUGRXW!
6WDQGDUGRXWSXW
PDLQ!(YHU\WKLQJHOVHPDLQ!
VWDQGDUGRXW!
■ Sortie sur le fichier « foo.out »
"[PO YHUVLRQ  HQFRGLQJ 87)"!
IRRRXW!7HVWLQJ5HGLUHFW H[WHQVLRQ
'LGLHU'RQVH];0/

IRREDURXW!IRRVXEHOHPHQWWH[WQRGHIRREDURXW!
IRRRXW!

105

Les transformateurs XSLT

■ Sur le client (MS IE5.0)


• Le navigateur récupère .xml et le .xsl et le transforme à la volée
■ Sur le serveur Web (Apache/XALAN)
• La servlet transforme à la volée un document .xml avec une feuille .xsl
: le navigateur reçoit et visualise la transformation.
■ Standalone (XT, XALAN)
• la tranformation est faite par scripting (Shell ou tâche ANT)
■ Evolution : Apache Cocoon 2
• Association et application automatique des feuilles XSLT
en fonction de l ’ extension demandée par le browser VYJKWPOZPO
SXEERRN[POERRN[POZPO[VO !SXEERRNZPO
'LGLHU'RQVH];0/

SXEERRN[PO ERRN[POKWPO[VO !SXEERRNKWPO



111

Transformation XSLT et Service Web (i)

64/
24/ %'
-'%& 52522
+773*HW3RVW5HTXHVW 2'%&
6HUYOHW
+70/
-63 '&20
'+70/ (-%
&66 ;6/ $63 -50,
+70/ )RUPDWHU +70/7UDQVIRUPHU ;0/ ,,23 (QWLW\%HDQ
69*
:0/ ;3DWK
64/ %DVH
24/ ;0/
'LGLHU'RQVH];0/

Transformation XSL

%URZVHU6LGH
6HUYHU6LGH

112

Transformation XSLT et Service Web (ii)

64/
24/ %'
-'%& 52522
:$3*HW5HTXHVW 2'%&
6HUYOHW
:0/ -63 '&20
$63 -50, (-%
:$3 ;6/
:0/ *DWHZD\ :0/ 7UDQVIRUPHU ;0/ ,,23 (QWLW\%HDQ
%LQDLUH 7H[W
;3DWK
64/ %DVH
%URZVHU 24/ ;0/
'LGLHU'RQVH];0/

Transformation XSL
6LGH
3UR[\6LGH
6HUYHU6LGH

113
Transformation XSLT et Service Web
(iii)

64/
24/
-'%&
32675HTXHVW ;0/
&OLHQW ;6/ 2'%& %'
6HUYOHW
1DYLJDWHXU 7UDQVIRUPHU 52522
;0/

%URZVHU
6HUYHU6LGH
'LGLHU'RQVH];0/

6LGH

114

XSL-FO Formatting Object

■ Motivation
• transformation d ’ un document XML
vers un document non-XML
• 57):RUG3RVW6FULSW3')/D7H[«

■ Transformateur FO
'LGLHU'RQVH];0/

• Apache FOP (Formatting Object Processor)



115

FOP (xml.apache.org)

■ Formateur FO
• Renderer PDF (incluant images et vecteurs SVG)
■ Ligne de commande
MDYD RUJDSDFKHIRSDSSV&RPPDQG/LQHRUGHUIRRUGHUSGI
MDYD RUJDSDFKHIRSDSSV;DODQ&RPPDQG/LQHRUGHU[PO RUGHUIR[VORUGHUSGI
ODIHXLOOHGHVW\OHRUGHUIR[VO HVWDSSOLTXpVXU RUGHU[PO DYDQWOH IRUPDWWDJH
■ Depuis une application Java, une servlet, une JSP …
«
RUJDSDFKHIRSDSSV'ULYHUGULYHU QHZ RUJDSDFKHIRSDSSV'ULYHU 
GULYHUVHW5HQGHUHU RUJDSDFKHIRSUHQGHUSGI3')5HQGHUHUYHUVLRQ 
GULYHUDGG(OHPHQW0DSSLQJ RUJDSDFKHIRSIR6WDQGDUG(OHPHQW0DSSLQJ 
GULYHUDGG(OHPHQW0DSSLQJ RUJDSDFKHIRSVYJ69*(OHPHQW0DSSLQJ 
'LGLHU'RQVH];0/

GULYHUVHW:ULWHU QHZ 3ULQW:ULWHU QHZ )LOH:ULWHU DUJV>@ 


GULYHUEXLOG)27UHH SDUVHU ILOH,QSXW6RXUFH DUJV>@ 
GULYHUIRUPDW 
GULYHUUHQGHU 
«

116
FOP (xml.apache.org)
Exemple
■ "[PO YHUVLRQ  HQFRGLQJ XWI"!

IRURRW[POQVIR KWWSZZZZRUJ;6/)RUPDW!

 GHILQHV SDJH OD\RXW !


IROD\RXWPDVWHUVHW!

 OD\RXW IRU WKHILUVW SDJH!


IRVLPSOHSDJHPDVWHU SDJHPDVWHUQDPH ILUVW
SDJHKHLJKW FP
SDJHZLGWK FP
PDUJLQWRS FP
PDUJLQERWWRP FP
PDUJLQOHIW FP
PDUJLQULJKW FP!
IRUHJLRQEHIRUHH[WHQW FP!
IRUHJLRQERG\ PDUJLQWRS FP!
IRUHJLRQDIWHUH[WHQW FP!
'LGLHU'RQVH];0/

IRVLPSOHSDJHPDVWHU!

 OD\RXW IRU WKHRWKHU SDJHV!


IRVLPSOHSDJHPDVWHU SDJHPDVWHUQDPH UHVW
KHLJKW FP
ZLGWK FP
PDUJLQWRS FP

117

XML et CSS

■ Motivation
• Visualiser un document XML sans passer par XSLT vers un
format visualisable (XHTML1/HTML4)
■ Principe
• Le document utilise un style CSS
"[POVW\OHVKHHW W\SH WH[WFVV KUHI DUWLFOHFVV"!

• Les éléments sont rendus visibles par les propriétés display


,167580(17^GLVSOD\ LQOLQH `
$57,&/(+($'/,1($87+253$5$^GLVSOD\EORFN `

• puis positionnés, formatés, …


'LGLHU'RQVH];0/

+($'/,1(^IRQWVL]HHPIRQWVW\OH LWDOLF `
$57,&/(+($'/,1($87+253$5$^ PDUJLQHP`

■ Voir les recommandations sur les CSS du W3C



118
Exemple d ’utilisation des CSS
pour un document XML
DUWLFOHFVV
INSTRUMENT { GLVSOD\ LQOLQH }
ARTICLE, HEADLINE, AUTHOR, PARA { GLVSOD\EORFN }
HEADLINE { font-size: 1.3em }
AUTHOR { font-style: italic }
ARTICLE, HEADLINE, AUTHOR, PARA { margin: 0.5em }

DUWLFOH[PO
<?xml version="1.0"?>
<?[POVW\OHVKHHW type="text/css" href= "article.css"?>
<ARTICLE>
<HEADLINE>Fredrick the Great meets Bach</HEADLINE>
<AUTHOR>Johann Nikolaus Forkel</AUTHOR>
<PARA>
'LGLHU'RQVH];0/

One evening, just as he was getting his


<INSTRUMENT>flute</INSTRUMENT> ready and
his musicians were assembled, an officer brought
him a list of the strangers who had arrived.
</PARA>
</ARTICLE>

119

API XML

■ API de construction de documents XML


• DOM
■ APIs d’analyse (SDUVLQJ) de documents XML
• SAX
• DOM
'LGLHU'RQVH];0/

120
DOM
Document Object Model
■ API Objet
• pour manipuler un document XML depuis un langage de
programmation
• Java, JavaScript, Jscript, ...
■ Niveaux de DOM
• DOM Level 1
• DOM Core : interfaces de base et leur applications aux documents
XML
• DOM HTML : interfaces applicables aux documents HTML
• DOM Level 2
'LGLHU'RQVH];0/

• DOM CSS : feuilles de style


• DOM Events : Gestion des événements
• DOM Filters and Itérators : filtrage et traitement itératif
• DOM Range : isoler des fragments de documents pour traitement

121

DOM Level 1

■ Interfaces de DOM Core (org.w3c.dom)


• Document, DocumentFragment, Node, CharacterData, Attr,
Element, Text, Comment, CDATASection, DocumentType,
Notation, Entity, EntityReference, ProcessingInstruction +
NodeList, NamedNodeMap
■ Interfaces de DOM HTML
'LGLHU'RQVH];0/

122

Parseurs XML

■ Parseur et Parseur/Validateur
• analyse le document XML
• vérifie la validité du document
en fonction de sa DTD ou du XML Schema
■ API de Parseurs SAX et DOM
• SAX (Simple API for XML)
• orienté événement
au cours de l ’ analyse, le parseur appelle des fonctions de FDOOEDFN
quand il rencontre le début/fin du document et des éléments
• DOM (Document Object Model)
• orienté arbre d ’ objets
le parseur construit en mémoire un arbre d ’ objets (org.w3c.dom)
'LGLHU'RQVH];0/

représentant les éléments


■ Langages
• C, C++, Perl, Java, VB, C#, OCAML, PHP, …

123

Comparaison SAX et DOM

■ Avantages SAX ■ Inconvénients DOM


• le traitement du document par • construction d ’ un arbre en
le programme se fait en cours mémoire
d ’ analyse (efficacité) • multitude de petits objets
• seuls les éléments pertinents (efficacité des new et du GC
sont traités en Java)
• très grand documents
■ Inconvénients SAX
• tous les éléments sont
• écriture plus complexe des représentés
fonctions de callback pour
• le traitement du document par
traiter des structures imbriquées
le programme se fait après
l ’ analyse
'LGLHU'RQVH];0/

■ Avantages DOM
• navigation dans un arbre
d ’ éléments

124

L ’API Java pour XML

■ 2 API : SAX et DOM


• Java API for XML Parsing (JAXP)
• inclut dans J2SE
■ Packages
• org.xml.sax, org.w3c.dom
■ Parseurs (et Validateurs)
• Java J2SE
• SUN JAXP, IBM xml4j, Apache Xerces, James Clark XP,
Oracle3xml, MicroSoft, ...
'LGLHU'RQVH];0/

• Java J2ME pour l’ embarqué


• NanoXML, TinyXML, kXML, …
Parseur allégé (pas de validation, pas d’ entité, …)

125

L ’API SAX (Simple API for XML)

■ Principe
• Le parseur analyse le flot de caractères du document et
appelle des méthodes dites de FDOOEDFN lors qu ’ il rencontre
les balises de début et de fin du document et des éléments

6$;3DUVHU &ODVVHGHFDOOEDFN
)DFWRU\ H[WHQGV +DQGOHU%DVH

VWDUW'RFXPHQW 

VWDUW(OHPHQW 
[PO 3DUVHXU 6$;
'LGLHU'RQVH];0/

6$;3DUVHU
HQG(OHPHQW 

HQG'RFXPHQW 

126

Le parseur et les Handler

■ javax.xml.parser.SAXParserFactory
• Créer un instance de org.xml.sax.Parser
■ org.xml.sax.Parser
• L’ interface qui implémente un parseur validant.
■ org.xml.sax.HandlerBase
• Implémente les 4 interfaces suivantes
• org.xml.sax.DocumentHandler
• Interface qui définit les méthodes startDocument, endDocument, startElement,
endElement.
• org.xml.sax.ErrorHandler
• Interface qui définit les méthodes error, fatalError, warning qui sont invoqués
en cas d’ erreur.
'LGLHU'RQVH];0/

• org.xml.sax.DTDHandler
• Interface qui définit les méthodes pour l’ analyse de la DTD.
• org.xml.sax.EntityResolver

127
Exemple SAX
Implémentation du handler
LPSRUW RUJ[POVD[ LPSRUWRUJ[POVD[KHOSHUV LPSRUWMDYDLR 

SXEOLFFODVV6D[(FKRH[WHQGV+DQGOHU%DVH ^
SXEOLFYRLGVWDUW'RFXPHQW  WKURZV 6$;([FHSWLRQ^
6\VWHPRXWSULQWOQ 6$;(YHQW67$57'2&80(17 `
SXEOLF YRLGHQG'RFXPHQW  WKURZV 6$;([FHSWLRQ^
6\VWHPRXWSULQWOQ 6$;(YHQW(1''2&80(17 `
SXEOLF YRLGVWDUW(OHPHQW 6WULQJ QDPHVSDFH85,6WULQJ ORFDO1DPH
6WULQJ T1DPH$WWULEXWHVDWWU WKURZV 6$;([FHSWLRQ^
6\VWHPRXWSULQWOQ 6$;(YHQW67$57(/(0(17> ORFDO1DPH @ 
IRU LQW L L DWWUJHW/HQJWK L ^
6\VWHPRXWSULQWOQ $775,%87( DWWUJHW/RFDO1DPH L
9$/8( DWWUJHW9DOXH L  ``
'LGLHU'RQVH];0/

SXEOLF YRLGHQG(OHPHQW 6WULQJ QDPHVSDFH85,6WULQJ ORFDO1DPH


6WULQJ T1DPH WKURZV 6$;([FHSWLRQ^
6\VWHPRXWSULQWOQ 6$;(YHQW(1'(/(0(17>ORFDO1DPH @ `


128
Exemple SAX
Affichage d ’un document
SXEOLF YRLGFKDUDFWHUV FKDU>@FK LQWVWDUW LQWOHQJWK WKURZV 6$;([FHSWLRQ^
6\VWHPRXWSULQW 6$;(YHQW&+$5$&7(56> 
WU\ ^2XWSXW6WUHDP:ULWHURXWZ QHZ 2XWSXW6WUHDP:ULWHU 6\VWHPRXW 
RXWZZULWH FK VWDUWOHQJWK  RXWZIOXVK 
`FDWFK ([FHSWLRQH ^HSULQW6WDFN7UDFH `
6\VWHPRXWSULQWOQ @ `

SXEOLFYRLGVHW'RFXPHQW/RFDWRU /RFDWRU O WKURZV 6$;([FHSWLRQ^


RXWZZULWH /2&$725?Q6<6,'OJHW6\VWHP,G  RXWIOXVK `

SXEOLF YRLGSURFHVVLQJ,QVWUXFWLRQ 6WULQJ WDUJHW6WULQJGDWD WKURZV 6$;([FHSWLRQ^


'LGLHU'RQVH];0/

RXWZZULWH 352&(66"WDUJHWGDWD"! `



129
Exemple SAX
Affichage d ’un document
SXEOLFVWDWLFYRLG PDLQ 6WULQJ DUJY >@ ^
LI DUJYOHQJWK   ^
6\VWHPHUUSULQWOQ 8VDJH FPGILOHQDPH 6\VWHPH[LW  `
WU\ ^
6$;3DUVHU)DFWRU\IDFWRU\ 6$;3DUVHU)DFWRU\QHZ,QVWDQFH
IDFWRU\VHW9DOLGDWLQJ WUXH VHWSDUVHUYDOLGDWLQJ
RXW QHZ 2XWSXW6WUHDP:ULWHU 6\VWHPRXW87) 
3DUVHWKH LQSXW6$;3DUVHU
VD[3DUVHU IDFWRU\QHZ6$;3DUVHU 
VD[3DUVHUSDUVH QHZ)LOH DUJY >@ QHZ6D[(FKR 
`«
'LGLHU'RQVH];0/

130
Exemple SAX
Récupération des exceptions
`FDWFK 6$;3DUVH([FHSWLRQ VSH ^ (UURUJHQHUDWHG E\ WKHSDUVHU
6\VWHPRXWSULQWOQ ?Q 3DUVLQJHUURUOLQH VSHJHW/LQH1XPEHU 
 XUL  VSHJHW6\VWHP,G 
6\VWHPRXWSULQWOQ  VSHJHW0HVVDJH  

`FDWFK 6$;([FHSWLRQ V[H ^ (UURUJHQHUDWHG E\ WKLV DSSOLFDWLRQ


 RUD SDUVHULQLWLDOL]DWLRQHUURU
([FHSWLRQ[ V[H
LI V[HJHW([FHSWLRQ  QXOO [ V[HJHW([FHSWLRQ 
[SULQW6WDFN7UDFH 

`FDWFK 7KURZDEOH W ^


WSULQW6WDFN7UDFH 
'LGLHU'RQVH];0/

6\VWHPH[LW  
`

132

L ’API DOM (Document Object Model)

■ Principe
• analyse et valide un document XML et construire un objet DOM
• l ’ objet DOM peut être ensuite traiter par le programme
• Parcours en largeur et profondeur de l’ arbre
• Manipulation de noeud
replacement, ajout de nœ ud, clonage, changement de valeur
• Sortie sur un OutputStream, sérialisation, …
■ Classes et interfaces
• DocumentBuilderFactory
• DocumentBuilder
• Document
'LGLHU'RQVH];0/

■ Remarque
• L’ implantation de Sun utilise simplement le parser SAX
avec un DocumentHandler qui construit l’ arbre DOM

133
Construction d’un objet DOM à partir
d’une analyse
LPSRUWRUJ[POGRPWUHH;PO'RFXPHQW

'RFXPHQW%XLOGHU)DFWRU\IDFWRU\ 'RFXPHQW%XLOGHU)DFWRU\QHZ,QVWDQFH 
IDFWRU\VHW1DPHVSDFH$ZDUH WUXH 
IDFWRU\VHW9DOLGDWLQJ WUXH 
6WULQJORFDWLRQ KWWSP\VHUYHUP\FRQWHQW[PO
WU\ ^
'RFXPHQW%XLOGHUEXLOGHU IDFWRU\QHZ'RFXPHQW%XLOGHU 
'RFXPHQWGRFXPHQW EXLOGHUSDUVH ORFDWLRQ 
;PO'RFXPHQW[GRF ;PO'RFXPHQW GRFXPHQW
QDYLJDWLRQGHO ·DUEUH'RFXPHQW
RX [GRFZULWH 6\VWHPRXW 
'LGLHU'RQVH];0/

`FDWFK 6$;([FHSWLRQVH ^«`



134

Construction d’un arbre DOM


'RFXPHQW%XLOGHU)DFWRU\GEI 'RFXPHQW%XLOGHU)DFWRU\QHZ,QVWDQFH 
'RFXPHQW%XLOGHUGE GEIQHZ'RFXPHQW%XLOGHU 
'RFXPHQWGRF GEQHZ'RFXPHQW 
■ Création et ajout d’un élément
(OHPHQWURRW GRFFUHDWH(OHPHQW KWPO 
GRFDSSHQG&KLOG URRW 
URRWDSSHQG&KLOG GRFFUHDWH(OHPHQW KHDG 
URRWDSSHQG&KLOG GRFFUHDWH7H[W1RGH ?QVRPH GDWD LVWH[W?Q 
URRWDSSHQG&KLOG GRFFUHDWH(OHPHQW ERG\ 
7H[W WH[W GRFFUHDWH7H[W1RGH ?Q 
URRWLQVHUW%HIRUH WH[W URRWJHW)LUVW&KLOG 
WH[W GRFFUHDWH7H[W1RGH ?Q 
URRWDSSHQG&KLOG WH[W 
'LGLHU'RQVH];0/

■ Création et modification d’un attribut


$WWUDWWU GRFFUHDWH$WWULEXWH DWWU  DWWUVHW1RGH9DOXH YDOXHRI DWWULEXWH  
URRWJHW$WWULEXWHV VHW1DPHG,WHP DWWU 
URRWVHW$WWULEXWH DWWUDQRWKHU VWULQJ 

135

Manipulation d’un objet DOM

■ Parcours (récursif) de l’arbre

VWDWLFYRLGWUDFH 1RGHQRGH 3ULQW6WUHDP RXW LQWLQGHQW ^


IRU LQW L LLQGHQWL RXWSULQW  
RXWSULQWOQ QRGHJHW1RGH1DPH   QRGHJHW1RGH7\SH   
LI QRGHKDV&KLOG1RGHV ^
1RGH/LVWQO QRGHJHW&KLOG1RGHV 
IRU LQW L LQOJHW/HQJWK L WUDFH QOLWHP L RXW LQGHQW 
``«
'RFXPHQWGRF GEQHZ'RFXPHQW «
WUDFH GRF6\VWHPRXW 
'LGLHU'RQVH];0/

■ Recherche de nœ ud dans l’arbre


1RGH/LVW QO GRFJHW(OHPHQWV%\7DJ1DPH 5(0$5. 
IRU LQW L LQOJHW/HQJWK L WUDFH QOLWHP L 6\VWHPRXW LQGHQW 

136

DOM et les langages de scripting

■ Exemple de document
OLVWLQJV!
DJHQW!
QDPH!-LOO 6PLWK5HDO (VWDWHQDPH!SKRQH!SKRQH!
DJHQW!
OLVWLQJ!
VXPPDU\!%HDXWLIXO %5SHQWKRXVHVXPPDU\!
DUHD!:HVW VLGHDUHD!SULFH!SULFH!
EHGURRPV!EHGURRPV!
EDWKURRPV!EDWKURRPV!
LQIRUPDWLRQ!([FHOOHQWFRQGLWLRQ 9HU\SULYDWHDQGIDFLQJVRXWKZLWKPDSOHKDUGZRRGIORRUVDQG
YDXOWHGFHLOLQJVIXOO EDWKURRPV EHGURRPV PDVWHU KDV ZDONLQ FORVHWDQG HQVXLWH  FHUDPLF
WLOH JDVILUHSODFH DODUP V\VWHP EDOFRQLHV KXJHVWRUDJH  ORFNHUSDUNLQJLQIRUPDWLRQ!
OLVWLQJ!
OLVWLQJ!
VXPPDU\!3ULFHG WR VHOO 'RQ·WZDLWVXPPDU\!
DUHD!(DVWVLGHDUHD!SULFH!SULFH!
EHGURRPV!EHGURRPV!
'LGLHU'RQVH];0/

EDWKURRPV!EDWKURRPV!
LQIRUPDWLRQ! GHQVIIRU+RZ FDQ\RX JR ZURQJ/DUJHOLYLQJ DQGGLQLQJDUHD
EDWKV ZDONWKURXJKFORVHW WRHQVXLWHFXVWRP PDUEOHDQG,WDOLDQSHGHVWDOVLQNLQ SRZGHU URRP
*UHDWEX\ 3ULFHG WR VHOOLQIRUPDWLRQ!
OLVWLQJ!
OLVWLQJV!

137

DOM et les langages de scripting

■ Script ECMA
YDUDJHQW GRFXPHQWJHW(OHPHQWV%\7DJ1DPH DJHQW >@
YDU DJHQWQDPH DJHQWILUVW&KLOGILUVW&KLOGGDWD
YDU DJHQWSKRQH DJHQWILUVW&KLOGQH[W6LEOLQJILUVW&KLOGGDWD
YDU HO GRFXPHQWGRFXPHQW(OHPHQWILUVW&KLOG
ZKLOH HO ^
LI HOQRGH7\SH   ^ HO HOQH[W6LEOLQJ`
GXPS HOWDJ1DPH ?Q 
LI HOWDJ1DPH /,67,1* ^
YDU DUHD HOJHW(OHPHQWV%\7DJ1DPH DUHD >@ILUVW&KLOGGDWD
YDU SULFH HOJHW(OHPHQWV%\7DJ1DPH SULFH >@ILUVW&KLOGGDWD
YDU EU HOJHW(OHPHQWV%\7DJ1DPH EHGURRPV >@ILUVW&KLOGGDWD
YDUEDWK HOJHW(OHPHQWV%\7DJ1DPH EDWKURRPV >@ILUVW&KLOGGDWD
YDULQIR HOJHW(OHPHQWV%\7DJ1DPH LQIRUPDWLRQ >@ILUVW&KLOGGDWD
LI DUHD (DVWVLGH ^
SXW WKHYDULRXVSLHFHVLQWRWKHGDWDEDVH IRU WKH(DVWVLGH OLVWLQJV
 LQFOXGLQJWKH DJHQWLQIRUPDWLRQ
'LGLHU'RQVH];0/

` HOVH LI DUHD :HVW VLGH ^


SXW WKHYDULRXVSLHFHVLQWRWKHGDWDEDVH IRU WKH :HVW VLGH OLVWLQJV
 LQFOXGLQJWKH DJHQWLQIRUPDWLRQ
` HOVH SXWLQ VRPHHUURU PHVVDJHDERXW WKHDUHD QRW EHLQJIRXQG
`
HO HOQH[W6LEOLQJ
`

138

XML Binding

■ Motivation
• Faire correspondre des éléments avec des objets dans le
programme
• DOM typé, Mise en correspondance, …
■ Java
• JAXB, Castor, …
'LGLHU'RQVH];0/

■ Voir cours XML Binding



139

Quelles Applications XML

33 :HE 6HUYLFHV

:0/ 8'',
-;7$ HE;0/
5') 2$*,6
:6'/
&') ;+70/ %30/
566 62$3 %73:67
69* %30/ [&%/
60,/
;8/ ;)RUP 5RVHWWD1HW
'LGLHU'RQVH];0/

3,&6 F;0/
33

%& ($, %%



141

RDF Ressource Definition Framework

■ Objectifs: associer des propriétés descriptives


aux ressources (uri) du Web
■ Exemple
'LGLHU'RQVH];0/

■ Schémas RDF
• PICS, DC (Dublin Core), Sitemap, P3P

142

RDF Ressource Definition Framework

■ Objectifs :
• décrire plus précisément les ressources disponibles sur le web,
• adaptation au contexte XML,
• support pour ontologies, thesaurus...
■ Principe
• Un document est décrit à l' une 5')GHVFULSWLRQ
aide d'
• utilisant des éléments contenus dans un ou plusieurs 5') VFKHPD
■ Limitations
• Manque de stabilité
• normative (en complément de l'
évolution des autres normes)
• au niveau des outils,
'LGLHU'RQVH];0/

• au niveau des usages


■ Bibliographie
• site du W3C http://www.w3.org/RDF/
• An Idiot’ s Guide to the Resource Description Framework (Renato
Iannella) http://archive.dstc.edu.au/RDU/reports/RDF-Idiot/

143

RDF Ressource Definition Framework

■ Exemple
" [PO YHUVLRQ "!
5') [POQV KWWSZRUJ7535UGIV\QWD[
[POQV'& KWWSSXUORUJ'& !
'HVFULSWLRQDERXW KWWSGVWFFRPDXUHSRUWKWPO!
'&7LWOH! 7KH )XWXUHRI 0HWDGDWD '&7LWOH!
'&&UHDWRU! -DFN\&U\VWDO '&&UHDWRU!
'&'DWH!'&'DWH!
'&6XEMHFW! 0HWDGDWD5')'XEOLQ &RUH '&6XEMHFW!
'HVFULSWLRQ!
5')!
■ Explication
objet : KWWSGVWFFRPDXUHSRUWKWPO
'LGLHU'RQVH];0/

• L'
• est décrit dans l'élément XML/RDF <Description about= ...> ... </Description>
• par les propriétés : 7LWOH &UHDWRU'DWH 6XEMHFW
• définies dans le domaine nominal : xmlns:DC="http://purl.org/DC#"

144

RDF Schema

■ Objectif : description des propriétés RDF


■ Exemple
"[PO YHUVLRQ ··"!
UGI5') [POQVUGI KWWSZZZZRUJUGIV\QWD[QV
[POQVUGIV KWWSZZZZRUJ7535UGIVFKHPD
[POQVGF !
UGI'HVFULSWLRQDERXW !
GF7LWOH! 7KH 'XEOLQ &RUH(OHPHQW 6HWGF7LWOH!
GF'DWH!GF'DWH!«
UGI'HVFULSWLRQ!
UGI'HVFULSWLRQ,' 7LWOH!
UGIW\SH UGIUHVRXUFH KWWSZZZZRUJ7535UGIV\QWD[QV3URSHUW\!
'LGLHU'RQVH];0/

UGIVODEHO!7LWOHUGIVODEHO!
UGIVFRPPHQW!7KHQDPHJLYHQ WR WKHUHVRXUFHUGIVFRPPHQW!
UGIVLV'HILQHG%\UGIUHVRXUFH !
UGI'HVFULSWLRQ!
UGI5')!

145

RDF Schema

■ Explications
• xmlns:rdfs introduit l'
espace de noms servant à décrire le
schéma RDF.
• Ce document commence par sa description en RDF Puis il
donne les définitions relatives aux 15 éléments (définis
comme propriétés - Property - RDF
'LGLHU'RQVH];0/

146

DCD Document Content Description

■ Description XML d ’une DTD


• http://www.w3.org/TR/NOTE-dcd

■ Exemple
'LGLHU'RQVH];0/

147

XHTML

■ Appliquer l ’extensibilité de XML à HTML4.01


• ajout de nouveaux éléments, ...

■ 3 étapes
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"DTD/xhtml1-strict.dtd">
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"DTD/xhtml1-transitional.dtd">
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Frameset//EN"
"DTD/xhtml1-frameset.dtd">
'LGLHU'RQVH];0/

148
XHTML
Les différences avec HTML4
■ Document correct
• pas de chévauchement
S!OHVpOpPHQWVHP!V ·HPERLWHQWHP!S!
au lieu de
S!OHVEDOLVHVHP!VHFKHYDXFKHQWSDVS!HP!
• éléments vides
EU!KU!au lieu de EU!KU! qui est INCORRECT
• valeurs attributs
WDEFRO ! au lieu de WDEFRO !qui est INCORRECT
■ Style et Script
VFULSW!
>&'$7$>
'LGLHU'RQVH];0/

 XQHVFDSHG VFULSWFRQWHQW


@@!
VFULSW!

149

XHTML - Exemple

■ Document XML utilisant des éléments du domaine de


noms XHTML
"[PO YHUVLRQ  HQFRGLQJ 87)"!
 LQLWLDOO\ WKHGHIDXOWQDPHVSDFHLV ERRNV!
ERRN [POQV
XUQORFJRYERRNV

[POQVLVEQ
XUQ,6%1
[POODQJ HQ ODQJ HQ!
WLWOH!&KHDSHU E\ WKH'R]HQWLWOH!
LVEQQXPEHU!LVEQQXPEHU!
QRWHV!
 PDNH +70/ WKHGHIDXOWQDPHVSDFH IRUD K\SHUWH[WFRPPHQWDU\ !
S [POQV
KWWSZZZZRUJ[KWPO
!
7KLV LVDOVRDYDLODEOHD KUHI KWWSZZZZRUJ!RQOLQHD!
'LGLHU'RQVH];0/

S!
QRWHV!
ERRN!

150

XHTML - Exemple

■ Document XHTML utilisant la recommandation MathML


KWPO[POQV KWWSZZZZRUJ[KWPO [POODQJ HQ ODQJ HQ!
KHDG!WLWOH!$0DWK([DPSOHWLWOH!KHDG!
ERG\!
S!7KHIROORZLQJLV0DWK0/PDUNXSS!
PDWK [POQV KWWSZZZZRUJ0DWK0DWK0/!
DSSO\!ORJ!
ORJEDVH!
FQ!FQ!
ORJEDVH!
FL![FL!
DSSO\!
'LGLHU'RQVH];0/

PDWK!
ERG\!KWPO!
XUL ;0/ EDVHG 8VHU,QWHUIDFH /DQJXDJH

151

KWWSZZZ[XOSODQHWFRP
■ Widget des GUI (Interface graphique)
• Supporté par NS Communicator 6 et Mozilla
■ Exemple
'LGLHU'RQVH];0/

152

XForm (W3C)

■ Définition abstraite des formulaires


• Limitation du <FORM> HTML
• Ne définit l’ apparence GUI
• Functionnalités : Dépendances entre les entrées, …
■ Exemple
'LGLHU'RQVH];0/

154

Les Outils
■ Editeurs XML
• http://www.alphaWorks.ibm.com/tech/visualxmltools , ...
■ Browsers XML
• W3C Amaya, MS IE5, Mozilla, Opera
■ Parseurs XML/DOM
• MS, Java API for XML Parsing (JAXP).
• Parsers XML pour l’ embarqué (NanoXML, TinyXML, kXML)
■ Compilateurs XML/DOM
• Enhydra
■ Transformateurs XSL
• MS, XT, Xalan (xml.apache.org)
■ Serveurs Web
'LGLHU'RQVH];0/

• http://technet.oracle.com/tech/xml/xsql_servlet/
• servlet qui interroge une BD en SQL et formate le résultat en XML
■ SGBD XML
• Oracle 8i, Ardent, Software AG TAMINO, ObjectStore, ...

156

Apache XML Project KWWS[PODSDFKHFRP

■ Xerces - XML parsers in Java, C++ (with Perl and


COM bindings)
■ Xalan - XSLT stylesheet processors, in Java and
C++
■ Cocoon - XML-based web publishing, in Java
■ FOP - XSL formatting objects, in Java
■ Xang - Rapid development of dynamic server
pages, in Java
'LGLHU'RQVH];0/

■ SOAP - Simple Object Access Protocol



157

XSP

■ Voir xml.apache.org
'LGLHU'RQVH];0/

158

Scripting Serveur et et XML/DOM

■ Inconvénients des solutions précédentes


• Script générant du HTML
• génération par programmation (« à la main »)
• Script niché dans un document HTML
• Utilisation d ’ outils auteur pour créer les pages, OUI !
• MAIS l ’ insertion de scripts empêche de retravailler les pages
■ Alternative
• Utilisation du modèle DOM dans les scripts
• www.enhydra.org
'LGLHU'RQVH];0/

159
Scripting Serveur et et XML/DOM
3ULQFLSH L
■ Principe : le script ne manipule que des objets DOM
Objet
KWPO DOM/XML Assemblage
des objets DOM
Statique

HTML, XML
par le script
(ID, CLASS) XMLC
KWPO
id=1
HTML, XML
DTD statique
HTML Objet id=1 toString() +
DOM/XML généré
Dynamique
'LGLHU'RQVH];0/

Base
de SQL
Données

160
Scripting Serveur et et XML/DOM
&\FOHGH'pYHORSSHPHQW L
■ 1) Conception de document HTML avec des outils auteur
• L’ infographiste concoit le document avec une touche graphique et des
animations standards (bannière, boutons animés, menu, …)
• Certaines zones du document seront générés à la volée par un script. Ces
zones sont repérées par des attributs ID ou CLASS.
• Le document pourra être modifié ultérieurement (après 4)
■ 2) Compilation des pages HTML en objet Java DOM
• le document HTML est compilé en une classe Java instanciant des objets
DOM/XML
• nécessite parfois une mise en conformité (DTD/HTML4) du source HTML
produit par les outils auteur
'LGLHU'RQVH];0/

• packages org.w3c.dom et org.w3c.dom.html



161
Scripting Serveur et et XML/DOM
&\FOHGH'pYHORSSHPHQW LL
■ 3) Développement du script
• Le script (servlet) instance un objet DOM à partir de la classe produit par
le compilateur DOM. Cet objet est un arbre
• Les sous-arbres identifiés (ID ou CLASS ) par l ’ infographiste
correspondent aux zones qui vont être générés à la volée.
• Le script modifie ou remplace ces sous-arbres à partir de de sous-arbres
générés à partir de données retirées du Système d ’ Information (à
l ’ exécution).
■ 4) Requête
• Le script assemble les sous-arbre DOM générés avec l ’ arbre DOM
statique.
• Le script répond à la requête du client en retournant
'LGLHU'RQVH];0/

• l arbre DOM sérialisé dans le cas d ’ une réponse RMI


méthode writeObject()
• une génération texte de l ’ arbre DOM dans le cas d ’ une réponse HTTP
méthode toString()

162
Scripting Serveur et et XML/DOM
&\FOHGH'pYHORSSHPHQW LLL
GRFKWPO GRFKWPO

c d HTML
d
HTML Mise en Compillateur
Outil Auteur Conformité conforme
(DreamWeaver, …) (ID, CLASS) XML/DOM
DTD HTML4.0
DTD HTML4.0 (XMLC, …)

GRFKWPOMDYD
classe Java
instanciant
des objets DOM
VHU
Environnement d ’exécution
e
vers un (Serveur Servlet, Serveur RMI, …)
client RMI GRFKWPOFODVV
Schema
GRFMDYD
'LGLHU'RQVH];0/

f
classe Java
KWPO GRFFODVV
répondant
Base à une requête
vers un
browser Web

163

XML dans les produits MicroSoft

■ Objets ActiveX
• "Microsoft.XMLDOM"
• "Microsoft.XMLHTTP"
• …
'LGLHU'RQVH];0/

164
XML dans IE5.x
HTTP POST d’un document XML
+70/!%2'<!
6&5,37!
 UXQRQO\ZLWK 06,([
IXQFWLRQ3RVW;PO'RF DFWLRQXUO[POGRF ^
YDU [POKWWS QHZ $FWLYH;2EMHFW 0LFURVRIW;0/+773 
[POKWWSRSHQ 3267 DFWLRQXUOIDOVH 
[POKWWSVHQG [POGRF 
UHWXUQ [POKWWSUHVSRQVH;0/
`
IXQFWLRQVXEPLW,QIR ^
YDU [POGRF QHZ $FWLYH;2EMHFW 0LFURVRIW;0/'20 
[POGRFDV\QF IDOVH
[POGRFORDG;0/ [POGRF7H[WYDOXH 
'LGLHU'RQVH];0/

YDU UHVSRQVH 3RVW;PO'RF VHUYOHWSRVW[POGRF [POGRF 


DOHUW UHVSRQVHGRFXPHQW(OHPHQW[PO 
`
6&5,37!
«

165
XML dans IE5.x
HTTP POST d’un document XML
«
E!7\SHLQDQ;0/'RFXPHQWWR3RVWE!EU!
7(;7$5($ URZV FROV 1$0( [POGRF7H[W!
VOLGHVKRZ!
VOLGH!
VRXUFH!LPJDTXDEDLHVWSDXOMSJVRXUFH!
WLWOH!%DLH6DLQW3DXOWLWOH!
GHVFULSWLRQ!
:DWHUFRORU RI%DLH6DLQW3DXO 4XHEHF&DQDGD $XJXVW 
GHVFULSWLRQ!
VOLGH!
VOLGHVKRZ!
7(;7$5($!
'LGLHU'RQVH];0/

3!,13877<3( EXWWRQ 9DOXH 3RVW;0/'RFXPHQW RQFOLFN VXEPLW,QIR !


%2'<!
+70/!

166

Binarisateur XML

■ Représentation binaire (bytecode) de documents


XML
■ Motivation
• Version plus compacte de documents XML
• pour les transferts et l’ empreinte mémoire (informatique
embarquée)
■ Utilisations
• WML, MPEG7 (iTV), …
'LGLHU'RQVH];0/

167

Bibliographie

■ Voir
• Cours « BD et XML », « Scripting Serveur », « HTML »
■ Sites
• http://www.w3c.org/XML
• http://java.sun.com/xml/ Java API for XML Parsing 1.0 (JAXP).
• http://xml.apache.org
• http://www.xml.com
• http://www.jclark.com/xml/xt.html
• http://www.oasis-open.org/cover/xml.html
• http://www.xml101.com
'LGLHU'RQVH];0/

• http://www.alphaworks.ibm.com
• http://www.xmlsoftware.com
• news://comp.text.xml

168

Bibliographie

■ Charles F. Goldfarb, "The XML Handbook", 2nd edition, 1999, Ed


Prentice Hall, ISBN 0-13-014714-1
■ Elliotte Rusty Harold , « XML Bible », 1015 pages July 1999, IDG
Books Worldwide; ISBN: 0764532367
• la bible : il existe la version française (ISBN 2-7464-0070-7)
■ Brett McLaughlin "Java and XML", 1st Edition June 2000, ISBN 0-
596-00016-2, 498 pages, Edition OREILLY &ASSOCIATES
■ J.C. Bernadac, F. Knab, « XML, Construire une Application », Ed.
Eyrolles, 1999, ISBN 2-212-09081-1
• assez complet et 2 études de cas complètes
en environnement ASP et Servlet
■ Benoît Marchal, XML by Example - 425 pages 1 edition, December
'LGLHU'RQVH];0/

1999, Que Education & Training; ISBN: 0789722429


■ M. Floyd, « Building Web Sites with XML », Ed Prentice Hall 1999,
ISBN 0-13-086601-6

169

Bibliographie

■ Michael Kay, "XSLT programmer’s Reference", 2000, Ed Wrox Press,


ISBN
■ Ian Graham, "XHTML 1.0 language and design sourcebook", 2000, Ed
Wiley
• Andrew Patzer , "Programmation Java côté serveur : Servlets, JSP et
EJB", Ed Eyrolles-Wrox, 2000, ISBN 1-861002-77-7 (sources des
exemples sur www.wroxfrance.com)
• chapitre 14 dans le contexte serveur Web
■ Elliotte Rusty Harold, W. Scott Means, « XML in a Nutshell, 2nd
Edition, A Desktop Quick Reference », Ed Oreilly
■ Howard Katz, Don Chamberlin, Denise Draper, Mary Fernandez,
Michael Kay, Jonathan Robie, Michael Rys, Jerome Simeon, Jim Tivy,
'LGLHU'RQVH];0/

Philip Wadler, « XQuery from the Experts: A Guide to the W3C XML
Query Language », Ed Addison-Wesley, Aout 2003, ISBN
0321180607, 512 pp

Vous aimerez peut-être aussi