You are on page 1of 141

XML

eXtensibIe Markup Language


Didier DONSEZ
Universit Joseph Fourier
IMA IMAG/LSR/ADELE
Didier.Donsez@imag.fr,
Didier.Donsez@ieee.org
http://www-adele.imag.fr/~donsez/cours
Ce cours est sur
http://www-adele.imag.fr/~donsez/cours/xml.pdf
12/11/2003
D
i
d
i
e
r

D
o
n
s
e
z
,

1
9
9
8
-
2
0
0
3
,

X
M
L
2
Les Applications XML
RDF
RSS
SVG
XHTML
XForm
WML
BPML
ebXML
RosettaNet
XAML
OAGIS
xCBL
B2C EAI B2B
XSL-T
XSL-FO
WSDL
SOAP
UDDI
Web Services
BPML
CDF
cXML XUL
JXTA
P2P
12/11/2003
D
i
d
i
e
r

D
o
n
s
e
z
,

1
9
9
8
-
2
0
0
3
,

X
M
L
3
Au sommaire
IPrincipes de SGML et Limites de HTML
ILe typage de document
DTD, Namespace, XML Schema
ILOutillage XML
XPath, Xquery, XSL-T, XSL-FO
ILes API
SAX, DOM
ILes Applications
IBibliographie
12/11/2003
D
i
d
i
e
r

D
o
n
s
e
z
,

1
9
9
8
-
2
0
0
3
,

X
M
L
4
Principe de la GED
Gestion Electronique Documentaire
IGestion des Documents de l entreprise
Documents commerciaux
catalogues, fiches produits, factures,
Documents techniques
spcifications techniques, manuels utilisateur, manuels d entretien,
Documents qualits
suivi de fabrication de lots, rapports d incident,
Volume : 90% de l information est sous cette forme
IObjectif de la GED
Reprsentation uniforme voir normalise
Archivage
Recherche
12/11/2003
D
i
d
i
e
r

D
o
n
s
e
z
,

1
9
9
8
-
2
0
0
3
,

X
M
L
5
Exemple de Document Structur
I Document structur
comporte des parties ayant une signification particulire
I Exemple
|------titre=Autour d&xml;
|
|------date=1998
| |----paragraphe1
| |----figure1
| |---section1---|----paragraphe2
| | |----paragraphe3
|--chapitre1---|
| | |----paragraphe1
| |---section2---|----paragraphe2
| |----figure2
| |----paragraphe3
livre-----|
| |-------------------titre
| |
| | |----paragraphe1
| | |----figure3
|--chapitre2---|---section1---|----paragraphe2
|----paragraphe3
I La GED utilise des documents structurs
je recherche tous les documents dont le titre contient XML !
12/11/2003
D
i
d
i
e
r

D
o
n
s
e
z
,

1
9
9
8
-
2
0
0
3
,

X
M
L
6
Un peu d histoire
Les Principes de SGML and Co
Un ensemble ae stanaaras pour les aocuments structures
I SGML [Goldfarb, 74] : Standard Generalized Markup Language (ISO 8879)
Description de la structure d un type de document
Les documents de ce type respectent la structure
I DSSSL : Document Style Semantics and Specification Language
Feuille de style associe un type de document
I SPDL : Standard Page Description Langage
Formatage des documents SGML (+DSSSL)
DTD
SGML
Vrification
Doc
Balis
Style
Spec
DSSSL
Formatage
Rsrc
Typo
Doc
Balis
Vrifi
Doc
SPDL
Doc
PDF
Doc
PS
12/11/2003
D
i
d
i
e
r

D
o
n
s
e
z
,

1
9
9
8
-
2
0
0
3
,

X
M
L
10
Limites de HTML
IHTML 4.0 et DHTML
extensibilit par la normalisation
pas de validation de la structure
ISGML
structure smantique et type de document (DTD)
mais reste compliqu et non intgr aux browsers
IXML
principes de SGML mais simplification de la DTD
1
2
/
1
1
/
2
0
0
3
Didier Donsez, 1998-2003, XML
1
1
H
T
M
L

v
s
.

X
M
L
12/11/2003
D
i
d
i
e
r

D
o
n
s
e
z
,

1
9
9
8
-
2
0
0
3
,

X
M
L
12
XML eXtensible Markup Language
I Document Standalone
Les documents sont bien forms (well formea),
I Document Type Definition, DTD
Typage de documents structurs et extensibles
Les documents sont valides (valia)
I XML Schema
Schema des documents
Exprim en syntaxe XML et extensible (contrairement la DTD)
I Extensible Stylesheet Language, XSL
Transformation et rorganisation d un document XML
I Xlink, XPointers
Hyperliens volus
12/11/2003
D
i
d
i
e
r

D
o
n
s
e
z
,

1
9
9
8
-
2
0
0
3
,

X
M
L
14
Les Documents XML
IIls sont structurs en lment
IIls doivent tre Bien Forms (Well formed)
balisage la SGML
cependant <element> et </element> obligatoires
sauf <empty_element/>
la valeur des attributs est toujours entre double cote
<element attr="valeur"/>
IIls peuvent tre VaIids (Valid)
Utilis une DTD (Document Type Definition)
ou un schma XML
qui dfinit 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
12/11/2003
D
i
d
i
e
r

D
o
n
s
e
z
,

1
9
9
8
-
2
0
0
3
,

X
M
L
15
Exemple de documents XML (i)
IUn document XML bien form
<?xm| vers|on="1.0" stende|one="yes"?>
<greet|ng>he||o,<br|>wor|d!<|greet|ng>
IUn document XML valide incluant une DTD
<?xm| vers|on="1.0" encod|ng="UTF-8" ?>
<!006TYPE greet|ng [
<!ELEHENT greet|ng (#P60ATA[br)*>
<!ELEHENT br EHPTY>
}>
<greet|ng>he||o,<br|>wor|d!<|greet|ng>
12/11/2003
D
i
d
i
e
r

D
o
n
s
e
z
,

1
9
9
8
-
2
0
0
3
,

X
M
L
16
Exemple de documents XML (ii)
IUn document XML valide
utilisant un DTD externe
<?xm| vers|on="1.0"?>
<!006TYPE greet|ng 8Y8TEH "he||o.dtd">
<greet|ng> he||o,<br|>wor|d!<|greet|ng>
IUn document XML valide
utilisant un schema XML
<greet|ng
xm|ns:xs|="http:||www.w3.org|1999|XHL8cheme-|nstence"
xs|:noNemespece8chemeLocet|on=greet|ng.xsd'>
<greet|ng> he||o,<br|>wor|d!<|greet|ng>
12/11/2003
D
i
d
i
e
r

D
o
n
s
e
z
,

1
9
9
8
-
2
0
0
3
,

X
M
L
17
Exercice
Donnez un document XML reprsentant cette recette
12/11/2003
D
i
d
i
e
r

D
o
n
s
e
z
,

1
9
9
8
-
2
0
0
3
,

X
M
L
18
Gnralits sur les documents XML
ILes caractres
codage Unicode (34168 symboles de 24 alphabets)
les parsers traitent au minimun UTF-8 et UTF-16
ILes espaces
les caractres , \r , \n, \t sont considrs comme des
sparateurs (texte XML au kilomtre )
ILes identificateurs
respect de la casse !
ILes commentaires
<!-- 6ec| est un commente|re
b|e b|e b|e
qu| se term|ne |c| -->
12/11/2003
D
i
d
i
e
r

D
o
n
s
e
z
,

1
9
9
8
-
2
0
0
3
,

X
M
L
19
La structure d un document
ILe prologue
ILa DTD
ILes lments
ILes balises (tags)
ILes attributs
ILes rfrences aux entits
ILes rfrences aux caractres
ILes sections CDATA
ILes donnes
12/11/2003
D
i
d
i
e
r

D
o
n
s
e
z
,

1
9
9
8
-
2
0
0
3
,

X
M
L
20
La structure d un document XML
ILe prologue
<?xm| vers|on="1.0"?>
<?xm| vers|on="1.0" encod|ng="|80-8859-1" ?>
spcifie le type d encodage du texte
<?xm| vers|on="1.0" encod|ng="UTF-8" stende|one="yes" ?>
le document est standalone :
il n a pas de DTD cependant le balisage doit tre quilibr
ILes instructions de traitements
instructions destines aux applications qui traiteront le
document
<?epp||cet|on |nstruct|on+ ?>
Exemple avec les feuilles de style
<?xm|-sty|esheet type="text|xs|" href="ert|c|e2xhtm|.xs|"?>
<?xm|-sty|esheet type="text|css" href="ert|c|e.css"?>
12/11/2003
D
i
d
i
e
r

D
o
n
s
e
z
,

1
9
9
8
-
2
0
0
3
,

X
M
L
21
La structure d un document XML
ILa dclaration du type DOCTYPE
Rfrence un fichier contenant la DTD Priv
<!006TYPE greet|ng 8Y8TEH "he||o.dtd">
<!006TYPE greet|ng 8Y8TEH "http:||www.mycomp.com|dtds|he||o.dtd">
Rfrence un fichier contenant la DTD public
<!006TYPE commende PUL|6
"-||YA0ET0U 0NL|NE 8A||0T0 des commendes||FR"
"http:||www.yedetou.fr|dtds|commende.dtd">
type||propr|te|re||motc|s descr|pt|on|||engue
Inclusion de la DTD
<!006TYPE greet|ng [
<!ELEHENT greet|ng (#P60ATA[br)*>
<!ELEHENT br EHPTY>
}>
12/11/2003
D
i
d
i
e
r

D
o
n
s
e
z
,

1
9
9
8
-
2
0
0
3
,

X
M
L
23
La structure d un document XML
La DTD : Document Type Definition
ILa dclaration des entits
Entit gnrale interne
uniquement utilis dans le document sous la forme &t|tre;
<!ENT|TY t|tre "XHL pour |es nu|s">
Entit paramtre interne
uniquement dans la DTD
<!ENT|TY 7ettneme "neme |0 #RE0U|RE0">
Entit paramtre externe
uniquement dans la DTD
<!ENT|TY 7nouveeu 8Y8TEH "nouveeu.txt">
Entit gnrale externe
uniquement dans la DTD
<!ENT|TY erch PUL|6 "erch|ve.z" N0ATA gz|p>
12/11/2003
D
i
d
i
e
r

D
o
n
s
e
z
,

1
9
9
8
-
2
0
0
3
,

X
M
L
24
La structure d un document XML
La DTD : Document Type Definition
ILa dclaration des lments
Contenu Vide
<!ELEHENT |dent EHPTY>
Contenu quelconque
<!ELEHENT |dent ANY>
contient une structure XML quelconque (mais quilibre)
Contenu lments fils
<!ELEHENT |dent ((f||s1+,f||s2*[f||s3+)[(f||s4,f||s5?))>
contient des lments
rgit par un expression rgulire
, squence ; | alternative ; multiplicateur * 0-N ; + 1-N ; ? 0-1
Contenu mixte
<!ELEHENT |dent (#P60ATA)>
<!ELEHENT |dent (#P60ATA[f||s+)>
12/11/2003
D
i
d
i
e
r

D
o
n
s
e
z
,

1
9
9
8
-
2
0
0
3
,

X
M
L
25
La structure d un document XML
La DTD : Document Type Definition
ILa dclaration des attributs
<!ATTL|8T nome|ement
nomettr|but type dfeut
nomettr|but type dfeut
...
>
IDfaut
#|HPL|E0 Optionnel
#RE0U|RE0 Obligatoire
#F|XE0 've|eur' Fix la valeur
've|eur' Valeur par dfaut
12/11/2003
D
i
d
i
e
r

D
o
n
s
e
z
,

1
9
9
8
-
2
0
0
3
,

X
M
L
26
La structure d un document XML
La DTD : Document Type Definition
ITypes dattribut (i)
Types chane de caractres 60ATA
<!ATTL|8T doss|er chem|n 60ATA #|HPL|E0 >
Type Prdfini ENT|TY, ENT|T|E8
nom (ou liste de noms) d entits non XML prcdemment dclares
Type Prdfini NHT0KEN, NHT0KEN8
nom (ou liste de noms) de mots cl
<!ATTL|8T f|ch|er xm|:|eng NHT0KEN #RE0U|RE0 'fr'>
Valeurs numres
<!ATTL|8T erch|ve codege N0TAT|0N (gz|p[compress) #RE0U|RE0>
<!ATTL|8T erch|ve codege (gz|p[compress) 'gz|p'>
12/11/2003
D
i
d
i
e
r

D
o
n
s
e
z
,

1
9
9
8
-
2
0
0
3
,

X
M
L
27
Exercice
Donnez la DTD de ce document recette
<?xm| vers|on="1.0" encod|ng="|80-8859-1" ?>
<!006TYPE recette 8Y8TEH "http:||www.cook.org|dtds|recette.dtd">
<recette t|tre="Flan de chez ta mre" euteur="Didier Donsez">
<|ngred|ents>
<|ngred|ent mesure="6" un|te="gramme">oeuf<||ngred|ent>
<|ngred|ent mesure="6" un|te="tasse caf">lait<||ngred|ent>
<|ngred|ent mesure="6" un|te="cuillre soupe">sucre<||ngred|ent>
<|ngred|ent mesure="1" un|te="zeste">citron<||ngred|ent>
<||ngred|ents>
<|nstruct|ons>
<|nstruct|on>mlanger et battre au fouet tous les ingrdients<||nstruct|on>
<|nstruct|on>caramliser le fond et les parois du moule<||nstruct|on>
<|nstruct|on>verser dans le moule<||nstruct|on>
<cu|sson mode=" bain maire au four" tempereture="160C" duree="40 minutes"|>
<|nstruct|on>sortir du four et laisser refroidir au rfrigrateur 6 heures<||nstruct|on>
<||nstruct|ons>
<remerque>Rentre chez ta mre, elle t'a fait un flan !<|remerque>
<|recette>
12/11/2003
D
i
d
i
e
r

D
o
n
s
e
z
,

1
9
9
8
-
2
0
0
3
,

X
M
L
28
La structure d un document XML
La DTD : Document Type Definition
ITypes dattribut (ii)
Type Prdfini |0
Identifiant unique dans le document
<!ATTL|8T doss|er reference |0 #RE0U|RE0 >
Type Prdfini |0REF, |0REF8
rfrence (ou liste de rf) d identifiants ID du document
<!ATTL|8T f|ch|er doss|er |0REF #RE0U|RE0 >
12/11/2003
D
i
d
i
e
r

D
o
n
s
e
z
,

1
9
9
8
-
2
0
0
3
,

X
M
L
29
Exercice
Donnez la DTD et les lments de ce graphe
AIice
DeIapIace
(1933-)
Bob
Dupont
(1930-1990)
Cary
DeIatour
(1934-)
DanieI
Durant
(1929-)
EIisa
Dupont
(1953-)
Fred
Durant
(1954-)
GIoria
Dupont
(1956-)
Henri
Durant
(1955-)
Jean
Durant
(1977-)
Ins
Durant
(1976-)
Kvin
Durant
(1979-)
Laura
Martin
(1980-)
12/11/2003
D
i
d
i
e
r

D
o
n
s
e
z
,

1
9
9
8
-
2
0
0
3
,

X
M
L
30
La structure d un document XML
La DTD : Document Type Definition
I Les sections conditionnelles
versions alternatives de structures dans un mme DTD
<![7deve|oppement;[ <!ELEHENT doss|er ANY> }}>
<![7f|ne|;[ <!ELEHENT doss|er (f|ch|er*[erch|ve*)> }}>
dpend de la dclaration d entits
<!ENT|TY 7deve|oppement '|N6LU0E'>
<!ENT|TY 7f|ne| '|6N0RE'>
<![/h6LJ0E[ <!ELEHEh7 dcssier AhY> ]]>
<![/Ch0RE[ <!ELEHEh7 dcssier (fichier*[erchive*}> ]]>
<!ENT|TY 7deve|oppement '|6N0RE'>
<!ENT|TY 7f|ne| '|N6LU0E'>
<![/Ch0RE[ <!ELEHEh7 dcssier AhY> ]]>
<![/h6LJ0E [ <!ELEHEh7 dcssier (fichier*[erchive*}> ]]>
12/11/2003
D
i
d
i
e
r

D
o
n
s
e
z
,

1
9
9
8
-
2
0
0
3
,

X
M
L
32
La structure d un document XML
ILes lments baliss (tags) et leurs attributs
<doss|er |d="123" chem|n="c:doccompteb|e" >
<f|ch|er nom="commende11022000.txt">
des ch|ffres pour |e commende du ||vre &|t;&t|tre;&gt;
<|f|ch|er>
<f|ch|er nom="commende12022000.txt">
d 'eutres ch|ffres
<|f|ch|er>
<e||es ref ="123"|>
<|doss|er>
ILes rfrences aux entits et aux caractres
&|t; &t|tre; &gt;
ILes sections CDATA (non parss)
<![60ATA[dens |e chep|tre sur <?xm| vers|on="1.0"?> }}>
12/11/2003
D
i
d
i
e
r

D
o
n
s
e
z
,

1
9
9
8
-
2
0
0
3
,

X
M
L
34
SDD : Standalone Document Declaration
I Omission de la DTD
mme si le document n appartient aucun type de document
il doit nanmoins tre bien form
quilibrage des start tags et end tags
et le tag <emptyelement/> pour les lments vides
I Exemple
<?xml version="1.0" standalone="yes"?>
<conversation>
<greeting>Hello, world!</greeting>
<response>
&gt;Stop the planet <pic src="earth"/>,
I want toget off!&lt;
</response>
</conversation>
12/11/2003
D
i
d
i
e
r

D
o
n
s
e
z
,

1
9
9
8
-
2
0
0
3
,

X
M
L
35
XML NameSpaces
ICollection d identificateurs (lment ou attribut)
identifi par un prfixe et une URI
IDclaration
<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 dfaut
12/11/2003
D
i
d
i
e
r

D
o
n
s
e
z
,

1
9
9
8
-
2
0
0
3
,

X
M
L
36
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>
</table>
</html>
12/11/2003
D
i
d
i
e
r

D
o
n
s
e
z
,

1
9
9
8
-
2
0
0
3
,

X
M
L
37
XML NameSpaces
IDclaration dans une DTD
le namespace est dclar comme une constante
<!ELEMENTorder:gencod(#PCDATA)>
<!ATTLIST order:gencod
xmlns:order CDATA #FIXED "http://www.mycomp.com/order-spec">
>
12/11/2003
D
i
d
i
e
r

D
o
n
s
e
z
,

1
9
9
8
-
2
0
0
3
,

X
M
L
38
Porte d un NameSpaces
Un autre dclation de nom de domaine remplace le prdent
dans les lments inclus et ses descendants
IExemple
<?xml version="1.0"?>
<bk:bookxmlns:bk=urn:loc.gov:books
xmlns:isbn=urn:ISBN:0-395-36341-6>
<bk:title>Cheaper bythe Dozen</bk:title>
<isbn:number>1568491379</isbn:number>
</bk:book>
12/11/2003
D
i
d
i
e
r

D
o
n
s
e
z
,

1
9
9
8
-
2
0
0
3
,

X
M
L
39
XML Catalog
ICatalogue de DTD Publiques
12/11/2003
D
i
d
i
e
r

D
o
n
s
e
z
,

1
9
9
8
-
2
0
0
3
,

X
M
L
40
XML Schema
le remplacant de la DTD
ILimite des DTD
description limit des documents structures
pas de typage des PCDATA
Limite
exprim dans un langage autre XML
autre parser, ...
IObjectif de XML Schema
Amlioration du typage : xsi
donnes obssant une expression rgulire
Amlioration de la structure : xsd
nombre born d lments inclus, ...
IRemplace de plus en plus la DTD
IValidateurs XML Schema : Xerces
12/11/2003
D
i
d
i
e
r

D
o
n
s
e
z
,

1
9
9
8
-
2
0
0
3
,

X
M
L
41
Les 2 parties de XML Schema
IDatatype (Partie 2)
dfinit un riche ensemble de types prdfinies
incluant celui des langages de SGBD, ...
IStructure (Partie 1)
dfinit la construction de types (dit archetype)
simples ou complexes
nomms ou anonymes
mcanismes d hritage (refinable archetype)
support pour les namespaces
validation de documents utilisant plusieurs namespaces
12/11/2003
D
i
d
i
e
r

D
o
n
s
e
z
,

1
9
9
8
-
2
0
0
3
,

X
M
L
42
XML Schema - XSI
ITypes primitifs
<e|ement neme="pr|ce" type="f|oet"|>
<e|ement neme="greet|ng" type="xsd:str|ng"|>
<pr|ce>15.57<|pr|ce>
<greet|ng |d="|d1">he||o<|greet|ng>
IStructures
<e|ement neme="ook">
<comp|exType>
<e|ement neme="euthor" type="xsd:str|ng"|>
<e|ement neme="t|t|e" type="xsd:str|ng"|>
<|comp|exType>
<|e|ement>
<e:ook>
<euthor>J.R.R To|k|en<|euthor>
<t|t|e>A hobb|t story<|t|t|e>
<|e:ook>
12/11/2003
D
i
d
i
e
r

D
o
n
s
e
z
,

1
9
9
8
-
2
0
0
3
,

X
M
L
43
XML Schema - XSI
IEnumration
<element name="color">
<simpleTypebase="xsd:string">
<enumerationvalue="Green"/>
<enumerationvalue="Blue"/>
</simpleType>
</element>
<color>Blue</color>
12/11/2003
D
i
d
i
e
r

D
o
n
s
e
z
,

1
9
9
8
-
2
0
0
3
,

X
M
L
44
XML Schema - XSI
IRfrences
<element name="salutation" type="xsd:string"/>
<salutation href="#id1"/>
<e:Book>
<title>MyLife and Work</title>
<firstauthor href="#Person-1"/>
<secondauthor href="#Person-2"/>
</e:Book>
<e:Personid="Person-1">
<name>Henry Ford</name>
<address xsi:type="m:Electronic-address">
<email>mailto:henryford@hotmail.com</email>
<web>http://www.henryford.com</web>
</address>
</e:Person>
<e:Personid="Person-2">
<name>Samuel Crowther</name>
<address xsi:type="n:Street-address">
<street>Martin Luther King Rd</street>
Loutillage XML
12/11/2003
D
i
d
i
e
r

D
o
n
s
e
z
,

1
9
9
8
-
2
0
0
3
,

X
M
L
53
Loutillage XML
IXPath
IXQuery
IXSL
IAPIs danalyse et de construction
12/11/2003
D
i
d
i
e
r

D
o
n
s
e
z
,

1
9
9
8
-
2
0
0
3
,

X
M
L
54
XPath
I Recommandation du W3C
I Expression de dsignation dun nud dans un document
XML
syntaxe simple et non ambigu
type usuels: chanes, nombres, boolens, variables, fonctions
spcifie une bibliothque de fonctions extensible
position(),
I Exemples
|chepter[gtype="wern|ng"}
||p[pos|t|on()=5}
I Utilis par XPointer et XSLT
I Implmentation
Package Xpath org.apache.xalan.xpath
12/11/2003
D
i
d
i
e
r

D
o
n
s
e
z
,

1
9
9
8
-
2
0
0
3
,

X
M
L
55
Expressions XPath (i)
/ parent
sect|on|peregrephe dsigne les <peregrephe> fils des <sect|on> de l lment courant.
// parent tendu aux aeux
. nud courant
.. pre du nud courant
| alternative
@zzz attribut zzz du nud courant
text() nuds CDATA fils du nud courant
comment() nuds commentaires fils du nud courant
pi() instructions de traitement du nud courant
id() slection sur identifiant ou liste didentifiants
12/11/2003
D
i
d
i
e
r

D
o
n
s
e
z
,

1
9
9
8
-
2
0
0
3
,

X
M
L
56
Expressions XPath (ii)
I Condition de slection [ ]
sect|on[gt|tre} <section> qui ont un attribut titre
sect|on[peregrephe} <section> qui ont au moins un fils <paragraphe>
sect|on[gt|tre='|ntroduct|on'} <section> qui ont un attribut titre dont la
valeur est "Introduction"
sect|on[peregrephe='|ntroduct|on'} <section> qui ont au moins un fils
<paragraphe> dont la valeur est "Introduction"
I Positionnement
position()=5 vrai si llment est la 5me position
f|rst-of-eny() vrai si l lment est le premier fils
|est-of-eny() vrai si l lment est le dernier fils
f|rst-of-type() vrai si l lment est le premier fils de son type
f|srt-of-type() vrai si l lment est le dernier fils de son type
12/11/2003
D
i
d
i
e
r

D
o
n
s
e
z
,

1
9
9
8
-
2
0
0
3
,

X
M
L
57
Expressions XPath (iii)
IConnecteurs logiques (not,and,or)
sect|on[not(gt|tre)} <section> qui n ont pas d attribut titre
sect|on|peregrephe[f|rst-of-type() end |est-of-type()}
<paragraphe> qui sont fils unique !
12/11/2003
D
i
d
i
e
r

D
o
n
s
e
z
,

1
9
9
8
-
2
0
0
3
,

X
M
L
59
Xquery
http://www.w3.org/TR/xquery
I Motivation
tendre la dsignation XPath 1.0
Namespace
dc:Creator tous les lments <Creator> appartenant au namespace dc:
chapter/@li:title : l attribut title de prfixe li des lments <chapter>
Collections d attributs
@* : tous les attributs de l lment courant
@li:* : tous les attributs de l lment courant identifis par le prfixe li
Comparaisons complexes
Oprateurs any et all

Construction de documents (alternative et complment XSLT)
I Principe
Langage fonctionnel semblable SQL, OQL,
12/11/2003
D
i
d
i
e
r

D
o
n
s
e
z
,

1
9
9
8
-
2
0
0
3
,

X
M
L
60
Exemple XQuery
<b|b>
<book yeer="1994">
<t|t|e>T6P||P |||ustreted<|t|t|e>
<euthor><|est>8tevens<||est><f|rst>w.<|f|rst><|euthor>
<pub||sher>Add|son-wes|ey<|pub||sher>
<pr|ce>5.95<|pr|ce>
<|book>
<book yeer="1992">
<t|t|e>Advenced Progremm|ng |n the Un|x env|ronment<|t|t|e>
<euthor><|est>8tevens<||est><f|rst>w.<|f|rst><|euthor>
<pub||sher>Add|son-wes|ey<|pub||sher>
<pr|ce>5.95<|pr|ce>
<|book>
<book yeer="2000">
<t|t|e>0ete on the web<|t|t|e>
<euthor><|est>Ab|tebou|<||est><f|rst>8erge<|f|rst><|euthor>
<euthor><|est>unemen<||est><f|rst>Peter<|f|rst><|euthor>
<euthor><|est>8uc|u<||est><f|rst>0en<|f|rst><|euthor>
<|book>
... <|b|b>
12/11/2003
D
i
d
i
e
r

D
o
n
s
e
z
,

1
9
9
8
-
2
0
0
3
,

X
M
L
61
Exemple Xquery
Recherche tendue
document("bib.xml")//book[
some$l in ./author/last satisfiesstring(data($l)) = "Stevens"]
12/11/2003
D
i
d
i
e
r

D
o
n
s
e
z
,

1
9
9
8
-
2
0
0
3
,

X
M
L
62
Exemple Xquery
Construction dlments
<resu|ts>
{
for $book |n ||book
|et $euthors := $book|euthor
return
<book euthor6ount
={ count($euthors)}>
{
for $euthor |n $euthors
return
<euthor>
{ $euthor||est|text() }
<|euthor>
}
<|book>
}
<|resu|ts>
<resu|ts>
<book euthor6ount="1">
<euthor>8tevens<|euthor>
<|book>
<book euthor6ount="1">
<euthor>8tevens<|euthor>
<|book>
<book euthor6ount="3">
<euthor>Ab|tebou|<|euthor>
<euthor>unemen<|euthor>
<euthor>8uc|u<|euthor>
<|book>
...
<|resu|ts>
12/11/2003
D
i
d
i
e
r

D
o
n
s
e
z
,

1
9
9
8
-
2
0
0
3
,

X
M
L
65
eXtensible Linking Language, XLL
ILimite des rfrences (URL) en HTML
ne rfrence qu un seul document
granularit grosse de rfrence : le document
accdes au 3me paragraphe qui suit le chapitre nomm "Introduction"
pas de relations entre les documents.
rfrence sens unique.
ILes 2 parties de XLL
Xlink : XML Linking Specification
XPointer : XML Extended Pointer Specification
12/11/2003
D
i
d
i
e
r

D
o
n
s
e
z
,

1
9
9
8
-
2
0
0
3
,

X
M
L
66
Xpointer
XML Extended Pointer Specification
adresse des objets internes la structure du document et ne
possdant pas d identifiant
Utilise les expressions Xpath
Exemple
http:||www.ucc.|e|xm||feq.sgm|#|0(feq-hypertext)6h|L0(2,*)(,*)
dsigne le 6me objet inclus dans le 2me objet inclus dans l lment
ayant un ID gale faq-hypertext .
IA lire
Recommanaation XPointer au W3C et le Chapitre 17 ae XML Bible
12/11/2003
D
i
d
i
e
r

D
o
n
s
e
z
,

1
9
9
8
-
2
0
0
3
,

X
M
L
67
Xpointer
XML Extended Pointer Specification
Exemple
http:||www-ede|e.|meg.fr|-donsez|exemp|e|coursxm|.xm|
#|ntroduct|on
#xpo|nter(|d("|ntroduct|on"))
#xpo|nter(|chep|tre[2}|p[3})
#xpo|nter(||chep|tre[t|tre="|ntroduct|on"}|
descendent::p[pos|t|on()=|est()})
#xpo|nter(|d("sec2.1")||p[2} to |d("sec2.2")||p[|est()})
#xpo|nter(str|ng-renge(||t|t|e,"6ours XHL"))
12/11/2003
D
i
d
i
e
r

D
o
n
s
e
z
,

1
9
9
8
-
2
0
0
3
,

X
M
L
68
XLink : XML Linking Specification
I spcifie les hyperliens dans un document XML
liens simples, type <A href="...">
liens tendus: multisource, multicible, externes
multi-direction, multi-cible, indpendance la localisation (en cas de
changement de place du document), transclusion (document inclus), liens
typs (attributs de lien).
I A lire
Recommanaation XLink au W3C et le Chapitre 16 ae XML Bible
12/11/2003
D
i
d
i
e
r

D
o
n
s
e
z
,

1
9
9
8
-
2
0
0
3
,

X
M
L
69
XLink : XML Linking Specification
I un lien simple:
<students xlink:href="students.xml">The list of students.</students>
I 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:arcfrom="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>
I Annotations:
<xlink:extended xmlns:xlink="http://www.w3.org/1999/xlink/namespace/"
role="xlink:external-linkset">
<xlink:title>DVsLinks</xlink:title>
<xlink:locator href="http://rpmfind.net/veillard/linkset.xml"/>
</xlink:extended>
12/11/2003
D
i
d
i
e
r

D
o
n
s
e
z
,

1
9
9
8
-
2
0
0
3
,

X
M
L
70
Xinclude (http://www.w3.org/TR/xinclude/)
I Inclusion de documents lors de lanalyse
Modularit, rutilisabilit
I Exemple
VXEW[W
8entence 0
VXE[PO
<?xm| vers|on='1.0'?>
<chepter>
<p>8entence 1. 8entence 2.<|p>
<p><|>8entence 3. 8entence 4.<||> 8entence 5.<|p>
<|chepter>
GRF[PO
<?xm| vers|on='1.0'?>
<document xm|ns:x|="http:||www.w3.org|2001|X|nc|ude">
<p>The texte document conte|ns : <|p>
<pre>
<x|:|nc|ude href="sub1.txt" perse="text"|>
<|pre>
<p> The XHL document conte|ns :<|p>
<x|:|nc|ude href="sub2.xm|#xpo|nter(chepter|p[1})"|>
<|document>
12/11/2003
D
i
d
i
e
r

D
o
n
s
e
z
,

1
9
9
8
-
2
0
0
3
,

X
M
L
71
eXtensible Stylesheet Language, XSL
I Dfinition de feuilles de style
Bas sur ISO/IEC 10179 DSSSL
Document Style Semantics and Specification Language
I Fonctionnalits proposes
fonctions simples
r-ordonnancement des lments
formatage des lments en fonction de leur position, de leur unicit ou par
rapport aux lments parents et leur descendance.
formatage incluant des textes et des graphiques,
macros de formatage rutilisables

I 2 parties
XSL-T Transformation (de XML vers XML [XHTML.WML.SJG..])
XSL-FO Formatting Object (de XML vers non-XML [PS.PDF.RTF..])
12/11/2003
D
i
d
i
e
r

D
o
n
s
e
z
,

1
9
9
8
-
2
0
0
3
,

X
M
L
72
XSLT - XSL Transformation
IMotivations
appliquer des transformations un document XML
r-ordonnancement des lments, masquage d lments, ...
vers un autre document XML
en general visualisable comme XHTML. WML. SJG. JRML. SMIL .
IAvantage
un document XML peut tre subir des transformations
diffrentes
12/11/2003
D
i
d
i
e
r

D
o
n
s
e
z
,

1
9
9
8
-
2
0
0
3
,

X
M
L
73
Remarques sur XSLT
IRemarque sur la maturit :
Attention :les transformateurs nimplantent pas toujours
XSLT compltement et ajoutent de plus des fonctionnalits et
des lments supplmentaires.
XALAN autorise lappel des fonctions Java
IRemarque propos des CSS :
quand la cible est du HTML4/XHTML1,
XSLT doit tre utilis de manire combin avec les CSS
IRemarque propos du formatage :
XSLT peut tre utilis comme tape dans le formatage vers
des documents non-XML (RTF. Wora. PostScript. PDF. LaTex. .)
voir FOP (Formatting Object processor)
12/11/2003
D
i
d
i
e
r

D
o
n
s
e
z
,

1
9
9
8
-
2
0
0
3
,

X
M
L
74
Principe de la transformation de XSLT
IAppel la transformation
instruction de traitement dans le document source XML
<?xm|-sty|esheet type="text|xs|" href="ert|c|e2xhtm|.xs|"?>
ILa feuille de style xsl:stylesheet
liste ordonne de templates xsl:templatequi sont appliqus aux
nuds de l arbre source
IUn template xsl:template
sous arbre du document de sortie comportant des lments de
DTD de sortie et des lments xsl:
IRgle xsl:template
dtermine si le template est applicable un nud de l arbre
source
12/11/2003
D
i
d
i
e
r

D
o
n
s
e
z
,

1
9
9
8
-
2
0
0
3
,

X
M
L
75
Un exemple de transformation XSLT
I 3cit un dccument scurce XHL
<?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>
<division id="West">
<revenue>6</revenue><growth>-1.5</growth><bonus>2</bonus>
</division>
</sales>
Instruction de
traitement
12/11/2003
D
i
d
i
e
r

D
o
n
s
e
z
,

1
9
9
8
-
2
0
0
3
,

X
M
L
76
Un exemple de transformation XSLT
pour une sortie HTML (pour IE5.0)
<xs|:sty|esheet xm|ns:xs|="http:||www.w3.org|TR|w0-xs|">
<xs|:temp|ete metch="|">
<htm|><heed><t|t|e>8e|es Resu|ts y 0|v|s|on<|t|t|e> <|heed><body>
<xs|:epp|y-temp|etes|>
<|body><|htm|>
<|xs|:temp|ete>
<xs|:temp|ete metch="se|es">
<teb|e border="1">
<tr><th>0|v|s|on<|th><th>Revenue<|th><th>6rowth<|th><th>onus<|th><|tr>
<xs|:epp|y-temp|etes se|ect="d|v|s|on"|>
<|teb|e>
<|xs|:temp|ete>
<xs|:temp|ete metch="se|es|d|v|s|on">
<tr><td><em><xs|:ve|ue-of se|ect="g|d"|><|em><|td><td><xs|:ve|ue-of se|ect="revenue"|><|td>
<td><xs|:ve|ue-of se|ect="growth"|><|td><td><xs|:ve|ue-of se|ect="bonus"|><|td>
<|tr>
<|xs|:temp|ete>
<xs|:temp|ete metch="*"><xs|:epp|y-temp|etes|><|xs|:temp|ete>
<|xs|:sty|esheet>
lment root
lment(s) sales
lment(s) division
tout lment
Appliqu les templates aux
sous-arbres
12/11/2003
D
i
d
i
e
r

D
o
n
s
e
z
,

1
9
9
8
-
2
0
0
3
,

X
M
L
77
Un autre exemple de transformation
XSLT pour une sortie HTML
<htm|
xs|:vers|on="1.0" xm|ns:xs|="http:||www.w3.org|1999|X8L|Trensform">
<heed><t|t|e>8e|es Resu|ts y 0|v|s|on<|t|t|e><|heed><body>
<teb|e border="1">
<tr><th>0|v|s|on<|th><th>Revenue<|th><th>6rowth<|th><th>onus<|th><|tr>
<xs|:for-eech se|ect="se|es|d|v|s|on"><!-- order the resu|t by revenue -->
<xs|:sort se|ect="revenue" dete-type="number" order="descend|ng"|>
<tr><td><em><xs|:ve|ue-of se|ect="g|d"|><|em><|td>
<td><xs|:ve|ue-of se|ect="revenue"|><|td>
<td><xs|:|f test="growth &|t; 0"><!-- h|gh||ght neget|ve growth |n red -->
<xs|:ettr|bute neme="sty|e"><xs|:text>co|or:red<|xs|:text><|xs|:ettr|bute
<|xs|:|f>
<xs|:ve|ue-of se|ect="growth"|>
<|td>
<td><xs|:ve|ue-of se|ect="bonus"|><|td>
<|tr>
<|xs|:for-eech>
<|teb|e>
<|body><|htm|>
12/11/2003
D
i
d
i
e
r

D
o
n
s
e
z
,

1
9
9
8
-
2
0
0
3
,

X
M
L
78
Le rsultat de la transformation
vers HTML
<htm|>
<heed><t|t|e>8e|es Resu|ts y 0|v|s|on<|t|t|e><|heed>
<body>
<teb|e border="1">
<tr><th>0|v|s|on<|th><th>Revenue<|th><th>6rowth<|th><th>onus<|th><|tr>
<tr><td><em>North<|em><|td><td>10<|td><td>9<|td><td>7<|td><|tr>
<tr><td><em>west<|em><|td><td><|td><td sty|e="co|or:red">-1.5<|td><td>2<|td><|tr>
<tr><td><em>8outh<|em><|td><td>4<|td><td>3<|td><td>4<|td><|tr>
<|teb|e>
<|body><|htm|>
12/11/2003
D
i
d
i
e
r

D
o
n
s
e
z
,

1
9
9
8
-
2
0
0
3
,

X
M
L
79
Un exemple de transformation XSLT
pour une sortie SVG
<xs|:sty|esheet vers|on="1.0" xm|ns:xs|="http:||www.w3.org|1999|X8L|Trensform"
xm|ns="http:||www.w3.org|6reph|cs|8v6|8v6-19990812.dtd">
<xs|:output method="xm|" |ndent="yes" med|e-type="|mege|svg"|>
<xs|:temp|ete metch="|">
<svg w|dth = "3|n" he|ght="3|n">
<g sty|e = "stroke: #000000">
<||ne x1="0" x2="150" y1="150" y2="150"|><||ne x1="0" x2="0" y1="0" y2="150"|>
<text x="0" y="10">Revenue<|text><text x="150" y="15">0|v|s|on<|text>
<xs|:for-eech se|ect="se|es|d|v|s|on">
<xs|:ver|eb|e neme="pos" se|ect="(pos|t|on()*40)-30"|> <!-- the ber's x pos|t|on -->
<xs|:ver|eb|e neme="he|ght" se|ect="revenue*10"|> <!-- the ber's he|ght -->
<rect x="{$pos}" y="{150-$he|ght}" w|dth="20" he|ght="{$he|ght}"|>
<text x="{$pos}" y="15"><xs|:ve|ue-of se|ect="g|d"|><|text>
<text x="{$pos}" y="{145-$he|ght}"><xs|:ve|ue-of se|ect="revenue"|><|text>
<|xs|:for-eech>
<|g><|svg>
<|xs|:temp|ete><|xs|:sty|esheet>
12/11/2003
D
i
d
i
e
r

D
o
n
s
e
z
,

1
9
9
8
-
2
0
0
3
,

X
M
L
80
Le rsultat de la transformation
vers HTML
<svg w|dth="3|n" he|ght="3|n
xm|ns="http:||www.w3.org|6reph|cs|8v6|svg-19990412.dtd">
<g sty|e="stroke: #000000">
<||ne x1="0" x2="150" y1="150" y2="150"|>
<||ne x1="0" x2="0" y1="0" y2="150"|>
<text x="0" y="10">Revenue<|text>
<text x="150" y="15">0|v|s|on<|text>
<rect x="10" y="50" w|dth="20" he|ght="100"|>
<text x="10" y="15">North<|text>
<text x="10" y="45">10<|text>
<rect x="50" y="110" w|dth="20" he|ght="40"|>
<text x="50" y="15">8outh<|text>
<text x="50" y="105">4<|text>
<rect x="90" y="90" w|dth="20" he|ght="0"|>
<text x="90" y="15">west<|text>
<text x="90" y="85"><|text>
<|g>
<|svg>
12/11/2003
D
i
d
i
e
r

D
o
n
s
e
z
,

1
9
9
8
-
2
0
0
3
,

X
M
L
81
Un exemple de document XML
<?xm| vers|on="1.0" encod|ng="UTF-8" ?>
<!006TYPE teb|e [
<!ELEHENT teb|e ((teb|e[row)*)>
<!ELEHENT row ((teb|e[co|)+)>
<!ELEHENT co| (#P60ATA)>
<!ATTL|8T row[co| neme 60ATA #RE0U|RE0>
}>
<?xm|-sty|esheet type="text|xs|" href="teb|e2htm|.xs|"?>
<teb|e>
<row> <co| neme="d|v|s|on">Nord<|co|><co| neme="revenue">10<|co|><|row>
<row> <co| neme="d|v|s|on">8ud<|co|><co| neme="revenue">7<|co|><|row>
<row> <co| neme="d|v|s|on">Est0uest<|co|>
<teb|e>
<row neme="1999"> <co| neme="revenue"><|co|><|row>
<row neme="2000"> ><co| neme="revenue">9<|co|><|row>
<|teb|e>
<|row>
<|teb|e>
12/11/2003
D
i
d
i
e
r

D
o
n
s
e
z
,

1
9
9
8
-
2
0
0
3
,

X
M
L
82
Structure de <xsl:stylesheet>
ILe document XSLT doit tre bien form
l lment racine est xs|:sty|esheet
nom de domaine seul xsl:
<xs|:sty|esheet xm|ns:xs|="http:||www.w3.org|1999|X8L|Trensform">
. <|xs|:sty|esheet>
avec d autres noms de domaine (ici par dfaut HTML)
<xs|:sty|esheet xm|ns:xs|="http:||www.w3.org|1999|X8L|Trensform"
xm|ns="http:||www.w3.org|TR|RE6-htm|40"
resu|t-ns="">
. <|xs|:sty|esheet>
IRemarque pour IE5.0
Lespace de nommage est xm|ns:xs|="http:||www.w3.org|TR|w0-xs|"
12/11/2003
D
i
d
i
e
r

D
o
n
s
e
z
,

1
9
9
8
-
2
0
0
3
,

X
M
L
83
Les lments de <xsl:stylesheet>
I <xsl:template match=""></xsl:template>
rgle de transformation
I <xsl:import href=""/>
importe des feuilles de style XSL
I <xsl:include href=""/>
inclut des lments XSL dans la feuille de style XSL
I <xsl:output method="method"/>
dfinit le format de la sortie. methoa peut tre xml, html, text
I <xsl:macro name="">...</xsl:macro >
dfinit une macro-instruction (groupe d lments rutilisables)
12/11/2003
D
i
d
i
e
r

D
o
n
s
e
z
,

1
9
9
8
-
2
0
0
3
,

X
M
L
84
Rgles de transformation explicites
ou Template Rules <xsl:template>
I Proprit match (REQUIRED)
la rgle ne s applique qu aux lments
vrifiant le pattern dfini par la valeur
Exemples
<xs|:temp|ete metch="|">
<xs|:temp|ete metch="teb|e">
<xs|:temp|ete metch="teb|e|comment()">
<xs|:temp|ete metch="|teb|e">
<xs|:temp|ete metch="teb|e[not(row)}">
<xs|:temp|ete metch="row|co|">
<xs|:temp|ete metch= "teb|e|*|co|">
12/11/2003
D
i
d
i
e
r

D
o
n
s
e
z
,

1
9
9
8
-
2
0
0
3
,

X
M
L
85
Elments des rgles de transformation
<xsl:templatematch="XX">
I<xsl:apply-templates select="YY">
applique les templates aux fils du nuds courant, restreint au pattern dfinit
par la proprit select
I<xsl:value-of select="YY">
donne la valeur du fils vrifiant le pattern dfinit par la proprit select
I{YY}
idem mais permet d insrer la valeur dans les balises des lments de
sortie
<xs|:temp|ete neme="L|NK">
<A hREF="{URL}"><xs|:ve|ue-of se|ect="8|TE"><|A>
<|xs|:temp|ete>
<L|NK 8|TE="w36" URL="http:||www.w3.org"|> est trensform
<A hREF="http:||www.w3.org"|>w36<|A>
12/11/2003
D
i
d
i
e
r

D
o
n
s
e
z
,

1
9
9
8
-
2
0
0
3
,

X
M
L
86
Elments des rgles de transformation
<xsl:templatematch="XX">
Ixsl:element : Insertion d lment
insre un lment dans la sortie dont le nom est une valeur de l entre
<xs|:temp|ete metch="co|">
<xs|:e|ement neme="{gneme}"><xs|:ve|ue-of se|ect="text()"|><|xs|:e|ement>
<|xs|:temp|ete>
<60L NAHE="8|te"|>w36<|60L> est trensform <8|TE>w36<|8|TE>
Ixsl:attribut : Insertion d un attribut
insre un lment dans la sortie dont le nom est une valeur de l entre
<xs|:temp|ete metch="L|NK">
<A>
<xs|:ettr|bute neme="hREF"><xs|:ve|ue-of se|ect="gURL"|><|xs|:ettr|bute>
<xs|:ve|ue-of se|ect="8|TE"|>
<|A>
<|xs|:temp|ete>
<L|NK 8|TE="w36" URL="http:||www.w3.org"|> est trensform
<A hREF="http:||www.w3.org"|>w36<|A>
12/11/2003
D
i
d
i
e
r

D
o
n
s
e
z
,

1
9
9
8
-
2
0
0
3
,

X
M
L
87
Elments des rgles de transformation
<xsl:templatematch="XX">
Ixsl:attribut-set : Insertion d un ensemble d attributs
<xs|:ettr|bute-set neme="fontett">
<xs|:ettr|bute neme="font-fem||y">T|mes<|xs|:ettr|bute>
<xs|:ettr|bute neme="font-s|ze">12pt<|xs|:ettr|bute>
<|xs|: ettr|bute-set>
<xs|:ettr|bute-set neme="pedd|ngett">
<xs|:ettr|bute neme="font-fem||y">1pt<|xs|:ettr|bute>
<|xs|: ettr|bute-set>
<xs|:temp|ete metch="60L">
<T0 xs|:use-ettr|bute-sets="fontett pedd|ngett"><xs|:ve|ue-of se|ect="."|><|T0>
<|xs|:temp|ete>
Ainsi
<60L NAHE="8|te"|>w36<|60L> est trensform en
<T0 font-fem||y="T|mes" font-fem||y="12pt" ce||-pedd|ng="1pt" >w36<|T0>
12/11/2003
D
i
d
i
e
r

D
o
n
s
e
z
,

1
9
9
8
-
2
0
0
3
,

X
M
L
88
Elments des rgles de transformation
<xsl:templatematch="XX">
I<xsl:copy>
copie le nud source dans la sortie
<xs|:temp|ete metch="row">
<xs|:copy><b><xs|:ve|ue-of se|ect="."|><|b><|xs|:copy>
<|xs|:temp|ete>
<xs|:temp|ete metch="co|"><xs|:copy|><|xs|:temp|ete>
I<xsl:for-each>
parcourt les nuds
I<xsl:choose>
<xsl:when>
<xsl:otherwise>
I<xsl:if test=...>
12/11/2003
D
i
d
i
e
r

D
o
n
s
e
z
,

1
9
9
8
-
2
0
0
3
,

X
M
L
89
Elments des rgles de transformation
<xsl:templatematch="XX">
I<xsl:sort>
Tri des nuds
<xs|:temp|ete metch="teb|e">
<teb|e>
<xs|:epp|y-temp|etes>
<xs|:sort se|ect="row|co|[neme='|0'}"
order="descend|ng"
dete-type="number"
|>
<|xs|:epp|y-temp|etes>
<|teb|e>
<|xs|:temp|ete>
12/11/2003
D
i
d
i
e
r

D
o
n
s
e
z
,

1
9
9
8
-
2
0
0
3
,

X
M
L
90
Elments des rgles de transformation
<xsl:templatematch="XX">
I<xsl:number ...>
Numrotation des nuds
Proprits : value, from, level, letter-value grouping-separator
grouping-size
<xs|:temp|ete metch="row">
<td>
<xs|:number ve|ue="pos|t|on()"
formet="|"
|>
<|td>
<xs|:epp|y-temp|etes se|ect="co|">
<|xs|:temp|ete>
12/11/2003
D
i
d
i
e
r

D
o
n
s
e
z
,

1
9
9
8
-
2
0
0
3
,

X
M
L
91
Elments des rgles de transformation
<xsl:templatematch="XX">
I<xsl: counter...>
12/11/2003
D
i
d
i
e
r

D
o
n
s
e
z
,

1
9
9
8
-
2
0
0
3
,

X
M
L
92
Dfinition de constantes
<xsl:variable name="XX">
IPermet de dfinir des constantes
<xs|:ver|eb|e neme="copyr|ght">
6opyr|ght 1998-2000 0|d|er 00N8EZ
<|xs|:ver|eb|e>
<xs|:ver|eb|e neme="uvhc">
Un|vers|t de ve|enc|ennes et du he|neut-6embrs|s
<|xs|:ver|eb|e>
<xs|:temp|ete ...>
<L06K 60PYR|6hT="{$copyr|ght}"> . <|L06K >
<hR><xs|:ve|ue-of se|ect="$copyr|ght"|>, <xs|:ve|ue-of se|ect="$uvhc"|>
<|xs|:temp|ete>
12/11/2003
D
i
d
i
e
r

D
o
n
s
e
z
,

1
9
9
8
-
2
0
0
3
,

X
M
L
93
Rgles de transformation implicites
ou Default Template Rules
I Liste des rgles implicites
<xs|:temp|ete metch="*[|"><xs|:epp|y-temp|etes|><|xs|:temp|ete>
Application des templates aux lments et ses descendants
<xs|:temp|ete metch="text() [g*"><xs|:ve|ue-of se|ect="."|><|xs|:temp|ete>
Copie les nuds texte dans le document rsultant
<xs|:temp|ete metch="process|ng-|nstruct|on()[comment()"|>
ne rien faire pour les instructions et les commentaires
I Application
Elles sont considres comme importes
Exemple
<?xm| vers|on="1.0"?>
<xs|:sty|esheet vers|on="1.0" xm|ns:xs|="http:||www.w3.org|1999|X8L|Trensform">
<|xs|:sty|esheet>
Elles sont ignores si une rgle qui concerne l lment est dfinie
I Remarque: IE5.0 n a pas de rgles implicites :
il faut les importer ou les ajouter
12/11/2003
D
i
d
i
e
r

D
o
n
s
e
z
,

1
9
9
8
-
2
0
0
3
,

X
M
L
94
Rgles de transformation explicites
ou Template Rules <xsl:template>
I Proprit mode (IMPLIED)
sert appliquer des rgles plusieurs fois un mme nud mais avec des
sorties diffrentes(rgles diffrentes)
I Exemple
<xs|:temp|ete metch="006">
<xs|:epp|y-temp|etes mode="toc"|><hr|><xs|:epp|y-temp|etes mode="toc"|>
<|xs|:temp|ete>
<xs|:temp|ete metch="6hAPTER" mode="toc">
<e href="#{g|0}"><xs|:ve|ue-of se|ect="T|TLE"|><|e><br|>
<|xs|:temp|ete>
<xs|:temp|ete metch="6hAPTER" mode="body">
<h1 neme="{g|0}">{T|TLE}<|h1><xs|:epp|y-temp|etes mode="body"|>
<|xs|:temp|ete>
I Cration de la rgle implicite
<xs|:temp|ete metch="*[|" mode="n"><xs|:epp|y-temp|etes mode="n"|><|xs|:temp|ete>
12/11/2003
D
i
d
i
e
r

D
o
n
s
e
z
,

1
9
9
8
-
2
0
0
3
,

X
M
L
95
Rgles Nommes
ou Named Template Rules
I Les rgles nommes peuvent tre utilises par d autres
rgles. Elles peuvent avoir aussi des paramtres
I Exemple (sans paramtre)
<xs|:temp|ete neme="H|N|">
<font fece="T|mes, ser|f" co|or="b|ue" s|ze="2">
<xs|:ve|ue-of se|ect="."|><|font>
<|xs|:temp|ete>
<xs|:temp|ete metch="YY">
<xs|:ce||-temp|ete neme="H|N|"|>
<|xs|:temp|ete>
<xs|:temp|ete metch="XX">
<xs|:ce||-temp|ete neme="H|N|"|>
<|xs|:temp|ete>
12/11/2003
D
i
d
i
e
r

D
o
n
s
e
z
,

1
9
9
8
-
2
0
0
3
,

X
M
L
96
Rgles Nommes
ou Named Template Rules
I Exemple (avec paramtre)
<xs|:temp|ete neme="H|N|">
<xs|:perem neme="po||ce">T|mes<|xs|:perem> <!-- ve|eur per dfeut -->
<font fece="{po||ce}, ser|f" co|or="b|ue" s|ze="2">
<xs|:ve|ue-of se|ect="."|><|font>
<|xs|:temp|ete>
<xs|:temp|ete metch="YY">
<xs|:ce||-temp|ete neme="H|N|">
<xs|:w|th-perem neme="f||e">he|vet|ce<|xs|:w|th-perem>
<xs|:ce||-temp|ete>
<|xs|:temp|ete>
<xs|:temp|ete metch="XX">
<xs|:ce||-temp|ete neme="H|N|"|>
<|xs|:temp|ete>
12/11/2003
D
i
d
i
e
r

D
o
n
s
e
z
,

1
9
9
8
-
2
0
0
3
,

X
M
L
97
Import et inclusion de feuilles de style
IImport
peut produire des conflits entre les rgles
prcedence la dernire rgle importe donc (dfinie)
<xs|:sty|esheet vers|on="1.0" xm|ns:xs|="http:||www.w3.org|1999|X8L|Trensform">
<xs|:|mport href="chert.xs|"|>
<xs|:|mport href="teb|e.xs|"|>
<!-- other ch||d e|ements fo||ow -->
<|xs|:sty|esheet>
IInclusion
remplace les rgles (mme match) de la feuille par ceux de la
feuille incluse
12/11/2003
D
i
d
i
e
r

D
o
n
s
e
z
,

1
9
9
8
-
2
0
0
3
,

X
M
L
98
Feuille de style niche
I La feuille de style XSL est directement niche dans le
document XML
<?xm| vers|on="1.0"?>
<?xm|-sty|esheet type="text|xm|" href="#|d(mysty|e)"?>
<TALE>
<xs|:sty|esheet vers|on="1.0"
xm|ns:xs|="http:||www.w3.org|1999|X8L|Trensform" |d="mysty|e">
<xs|:temp|ete metch="|"><htm|> <xs|:epp|y-temp|etes|> <|htm|> <|xs|:temp|ete>
<xs|:temp|ete metch="TALE"><teb|e><xs|:epp|y-temp|etes|> <teb|e><|xs|:temp|ete>
.
<xs|:temp|ete metch="xs|:sty|esheet"|>
<|xs|:sty|esheet>
<R0w><60L NAHE="Product">6offee<|60L><60L NAHE="Pr|ce">2.5<|60L><|R0w>
<R0w><60L NAHE="Product">Tee<|60L><60L NAHE="Pr|ce">1.5<|60L><|R0w>
<|TALE>
QDIILFKHSDVODIHXLOOHGHVW\OHHWVHVILOV
12/11/2003
D
i
d
i
e
r

D
o
n
s
e
z
,

1
9
9
8
-
2
0
0
3
,

X
M
L
99
Appel de script depuis une feuille XSLT
I Appel de fonctions (externes) par le transformateur
Indpendance du langage (JavaScript, Java, TCL, )
Sur XALAN
I Exemple
<?xm| vers|on="1.0"?>
<doc>
<foo f||e="foo.out">
Test|ng Red|rect extens|on:
<ber>A foo sube|ement text node<|ber>
<|foo>
<me|n>Everyth|ng e|se<|me|n>
<|doc>
12/11/2003
D
i
d
i
e
r

D
o
n
s
e
z
,

1
9
9
8
-
2
0
0
3
,

X
M
L
100
Appel de script depuis une feuille XSLT
<xs|:sty|esheet xm|ns:xs|="http:||www.w3.org|1999|X8L|Trensform"
vers|on="1.0" xm|ns:|xs|t="http:||xm|.epeche.org|xs|t"
xm|ns:red|rect="org.epeche.xe|en.xs|t.extens|ons.Red|rect"
extens|on-e|ement-pref|xes="red|rect">
<xs|:temp|ete metch="|">
<stenderd-out>8tenderd output:<xs|:epp|y-temp|etes|><|stenderd-out>
<|xs|:temp|ete>
<xs|:temp|ete metch="me|n">
<me|n><xs|:epp|y-temp|etes|><|me|n>
<|xs|:temp|ete>
<xs|:temp|ete metch="|doc|foo">
<red|rect:wr|te se|ect="gf||e">
<foo-out><xs|:epp|y-temp|etes|><|foo-out>
<|red|rect:wr|te>
<|xs|:temp|ete>
<xs|:temp|ete metch="ber">
<foober-out><xs|:epp|y-temp|etes|><|foober-out>
<|xs|:temp|ete>
<|xs|:sty|esheet>
12/11/2003
D
i
d
i
e
r

D
o
n
s
e
z
,

1
9
9
8
-
2
0
0
3
,

X
M
L
101
Appel de script depuis une feuille XSLT
ISortie sur la sortie standard
<?xm| vers|on="1.0" encod|ng="UTF-8"?>
<stenderd-out>
8tenderd output:
<me|n>Everyth|ng e|se.<|me|n>
<stenderd-out>
ISortie sur le fichier foo.out
<?xm| vers|on="1.0" encod|ng="UTF-8"?>
<foo-out>Test|ng Red|rect extens|on:
<foober-out>foo sube|ement text node<|foober-out>
<|foo-out>
12/11/2003
D
i
d
i
e
r

D
o
n
s
e
z
,

1
9
9
8
-
2
0
0
3
,

X
M
L
102
Les transformateurs XSLT
I Sur le client (MS IE5.0)
Le navigateur rcupre .xml et le .xsl et le transforme la vole
I Sur le serveur Web (Apache/XALAN)
La servlet transforme la vole un document .xml avec une feuille .xsl
: le navigateur reoit et visualise la transformation.
I Standalone (XT, XALAN)
la tranformation est faite par scripting (Shell ou tche ANT)
I Evolution : Apache Cocoon 2
Association et application automatique des feuilles XSLT
en fonction de l extension demande par le browser (.svg, .htm|, .wm|)
|pub|book1.xm| + book.xm|2wm|.xs| => |pub|book1.wm|
|pub|book1.xm| + book.xm|2htm|.xs| => |pub|book1.htm|
12/11/2003
D
i
d
i
e
r

D
o
n
s
e
z
,

1
9
9
8
-
2
0
0
3
,

X
M
L
108
Transformation XSLT et Service Web (i)
8erv|et
J8P
A8P
30L
00L
J086
0086
060H
JRH/
//0P
X8L
Trensformer
688
Formeter
hTHL 4.0
0hTHL
h77P Cet/Pcst Request
XHL
h7HL
3VC
wHL, ...
h7HL
rowser 8|de
8erver 8|de
XPeth
30L
00L
Transformation XSL
0
R, 0R, 00
EJ
Ent|ty een
ese
XHL
12/11/2003
D
i
d
i
e
r

D
o
n
s
e
z
,

1
9
9
8
-
2
0
0
3
,

X
M
L
109
Transformation XSLT et Service Web (ii)
8erv|et
J8P
A8P
X8L
Trensformer
wAP
6etewey
wHL
wAP Cet Request
XHL
wHL
7ext
wHL
8ineire
rowser
8|de
8erver 8|de
0
R, 0R, 00
EJ
Ent|ty een
30L
00L
J086
0086
060H
JRH/
//0P
ese
XHL
XPeth
30L
00L
Proxy 8|de
Transformation XSL
12/11/2003
D
i
d
i
e
r

D
o
n
s
e
z
,

1
9
9
8
-
2
0
0
3
,

X
M
L
110
Transformation XSLT et Service Web
(iii)
8erv|et
X8L
Trensformer
6||ent
(Nev|geteur)
P037 Request
XHL
rowser
8|de
8erver 8|de
0
R, 0R, 00
30L
00L
J086
0086
XHL
12/11/2003
D
i
d
i
e
r

D
o
n
s
e
z
,

1
9
9
8
-
2
0
0
3
,

X
M
L
111
XSL-FO Formatting Object
IMotivation
transformation d un document XML
vers un document non-XML
RTF. Wora. PostScript. PDF. LaTex. .
ITransformateur FO
Apache FOP (Formatting Object Processor)
12/11/2003
D
i
d
i
e
r

D
o
n
s
e
z
,

1
9
9
8
-
2
0
0
3
,

X
M
L
112
FOP (xml.apache.org)
I Formateur FO
Renderer PDF (incluant images et vecteurs SVG)
I Ligne de commande
jeve org.epeche.fop.epps.6ommendL|ne order.fo order.pdf
jeve org.epeche.fop.epps.Xe|en6ommendL|ne order.xm| order2fo.xs| order.pdf
# |e feu|||e de sty|e order2fo.xs| est epp||qu sur order.xm| event |e formettege
I Depuis une application Java, une servlet, une JSP
.
org.epeche.fop.epps.0r|ver dr|ver = new org.epeche.fop.epps.0r|ver();
dr|ver.setRenderer("org.epeche.fop.render.pdf.P0FRenderer", vers|on);
dr|ver.eddE|ementHepp|ng("org.epeche.fop.fo.8tenderdE|ementHepp|ng");
dr|ver.eddE|ementHepp|ng("org.epeche.fop.svg.8v6E|ementHepp|ng");
dr|ver.setwr|ter(new Pr|ntwr|ter(new F||ewr|ter(ergs[1})));
dr|ver.bu||dF0Tree(perser, f||e|nput8ource(ergs[0}));
dr|ver.formet();
dr|ver.render();
.
12/11/2003
D
i
d
i
e
r

D
o
n
s
e
z
,

1
9
9
8
-
2
0
0
3
,

X
M
L
113
FOP (xml.apache.org)
Exemple
I <?xm| vers|on="1.0" encod|ng="utf-8"?>
<fo:root xm|ns:fo="http:||www.w3.org|1999|X8L|Formet">
<!-- def|nes pege |eyout -->
<fo:|eyout-mester-set>
<!-- |eyout for the f|rst pege -->
<fo:s|mp|e-pege-mester pege-mester-neme="f|rst"
pege-he|ght="29.7cm"
pege-w|dth="21cm"
merg|n-top="1cm"
merg|n-bottom="2cm"
merg|n-|eft="2.5cm"
merg|n-r|ght="2.5cm">
<fo:reg|on-before extent="3cm"|>
<fo:reg|on-body merg|n-top="3cm"|>
<fo:reg|on-efter extent="1.5cm"|>
<|fo:s|mp|e-pege-mester>
<!-- |eyout for the other peges -->
<fo:s|mp|e-pege-mester pege-mester-neme="rest"
he|ght="29.7cm"
w|dth="21cm"
merg|n-top="1cm"
12/11/2003
D
i
d
i
e
r

D
o
n
s
e
z
,

1
9
9
8
-
2
0
0
3
,

X
M
L
114
XML et CSS
IMotivation
Visualiser un document XML sans passer par XSLT vers un
format visualisable (XHTML1/HTML4)
IPrincipe
Le document utilise un style CSS
<?xml:stylesheet type="text/css" href= "article.css"?>
Les lments sont rendus visibles par les proprits display
INSTRUMENT { display: inline }
ARTICLE, HEADLINE, AUTHOR, PARA { display: block }
puis positionns, formats,
HEADLINE { font-size: 1.3em; font-style: italic }
ARTICLE, HEADLINE, AUTHOR, PARA { margin: 0.5em }
IVoir les recommandations sur les CSS du W3C
12/11/2003
D
i
d
i
e
r

D
o
n
s
e
z
,

1
9
9
8
-
2
0
0
3
,

X
M
L
115
Exemple d utilisation des CSS
pour un document XML
article.css
INSTRUMENT { display: inline }
ARTICLE, HEADLINE, AUTHOR, PARA { display: block }
HEADLINE { font-size: 1.3em }
AUTHOR { font-style: italic }
ARTICLE, HEADLINE, AUTHOR, PARA { margin: 0.5em }
article.xml
<?xml version="1.0"?>
<?xml:stylesheet type="text/css" href= "article.css"?>
<ARTICLE>
<HEADLINE>Fredrick the Great meets Bach</HEADLINE>
<AUTHOR>Johann Nikolaus Forkel</AUTHOR>
<PARA>
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>
12/11/2003
D
i
d
i
e
r

D
o
n
s
e
z
,

1
9
9
8
-
2
0
0
3
,

X
M
L
116
API XML
IAPI de construction de documents XML
DOM
IAPIs danalyse (parsing) de documents XML
SAX
DOM
12/11/2003
D
i
d
i
e
r

D
o
n
s
e
z
,

1
9
9
8
-
2
0
0
3
,

X
M
L
117
DOM
Document Object Model
IAPI Objet
pour manipuler un document XML depuis un langage de
programmation
Java, JavaScript, Jscript, ...
INiveaux 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
DOM CSS : feuilles de style
DOM Events : Gestion des vnements
DOMFilters and Itrators : filtrage et traitement itratif
DOM Range : isoler des fragments de documents pour traitement
12/11/2003
D
i
d
i
e
r

D
o
n
s
e
z
,

1
9
9
8
-
2
0
0
3
,

X
M
L
118
DOM Level 1
IInterfaces de DOM Core (org.w3c.dom)
Document, DocumentFragment, Node, CharacterData, Attr,
Element, Text, Comment, CDATASection, DocumentType,
Notation, Entity, EntityReference, ProcessingInstruction +
NodeList, NamedNodeMap
IInterfaces de DOM HTML
12/11/2003
D
i
d
i
e
r

D
o
n
s
e
z
,

1
9
9
8
-
2
0
0
3
,

X
M
L
119
Parseurs XML
I Parseur et Parseur/Validateur
analyse le document XML
vrifie la validit du document
en fonction de sa DTD ou du XML Schema
I API de Parseurs SAX et DOM
SAX (Simple API for XML)
orient vnement
au cours de l analyse, le parseur appelle des fonctions de callback
quand il rencontre le dbut/fin du document et des lments
DOM (Document Object Model)
orient arbre d objets
le parseur construit en mmoire un arbre d objets (org.w3c.dom)
reprsentant les lments
I Langages
C, C++, Perl, Java, VB, C#, OCAML, PHP,
12/11/2003
D
i
d
i
e
r

D
o
n
s
e
z
,

1
9
9
8
-
2
0
0
3
,

X
M
L
120
Comparaison SAX et DOM
I Avantages SAX
le traitement du document par
le programme se fait en cours
d analyse (efficacit)
seuls les lments pertinents
sont traits
I Inconvnients SAX
criture plus complexe des
fonctions de callback pour
traiter des structures imbriques
I Inconvnients DOM
construction d un arbre en
mmoire
multitude de petits objets
(efficacit des new et du GC
en Java)
trs grand documents
tous les lments sont
reprsents
le traitement du document par
le programme se fait aprs
l analyse
I Avantages DOM
navigation dans un arbre
d lments
12/11/2003
D
i
d
i
e
r

D
o
n
s
e
z
,

1
9
9
8
-
2
0
0
3
,

X
M
L
121
L API Java pour XML
I2 API : SAX et DOM
Java API for XML Parsing (JAXP)
inclut dans J2SE
IPackages
org.xml.sax, org.w3c.dom
IParseurs (et Validateurs)
Java J2SE
SUN JAXP, IBM xml4j, Apache Xerces, James Clark XP,
Oracle3xml, MicroSoft, ...
Java J2ME pour lembarqu
NanoXML, TinyXML, kXML,
Parseur allg (pas de validation, pas dentit, )
12/11/2003
D
i
d
i
e
r

D
o
n
s
e
z
,

1
9
9
8
-
2
0
0
3
,

X
M
L
122
L API SAX (Simple API for XML)
IPrincipe
Le parseur analyse le flot de caractres du document et
appelle des mthodes dites de callback lors qu il rencontre
les balises de dbut et de fin du document et des lments
Perseur 8AX
(SAXParser)
.xm|
6|esse de ce||beck
(extends HandlerBase)
startDocument(...)
startElement(...)
endElement(...)
endDocument(...)
SAXParser
Factory
12/11/2003
D
i
d
i
e
r

D
o
n
s
e
z
,

1
9
9
8
-
2
0
0
3
,

X
M
L
123
Le parseur et les Handler
I javax.xml.parser.SAXParserFactory
Crer un instance de org.xml.sax.Parser
I org.xml.sax.Parser
Linterface qui implmente un parseur validant.
I org.xml.sax.HandlerBase
Implmente les 4 interfaces suivantes
org.xml.sax.DocumentHandler
Interface qui dfinit les mthodes startDocument, endDocument, startElement,
endElement.
org.xml.sax.ErrorHandler
Interface qui dfinit les mthodes error, fatalError, warning qui sont invoqus
en cas derreur.
org.xml.sax.DTDHandler
Interface qui dfinit les mthodes pour lanalyse de la DTD.
org.xml.sax.EntityResolver
12/11/2003
D
i
d
i
e
r

D
o
n
s
e
z
,

1
9
9
8
-
2
0
0
3
,

X
M
L
124
Exemple SAX
Implmentation du handler
|mport org.xm|.sex.*; |mport org.xm|.sex.he|pers.*; |mport jeve.|o.*;
pub||c c|ess 8exEcho extends hend|erese {
pub||c vo|d stert0ocument( ) throws 8AXExcept|on {
8ystem.out.pr|nt|n( "8AX Event: 8TART 006UHENT" ); }
pub||c vo|d end0ocument( ) throws 8AXExcept|on {
8ystem.out.pr|nt|n( "8AX Event: EN0 006UHENT" ); }
pub||c vo|d stertE|ement( 8tr|ng nemespeceUR|, 8tr|ng |oce|Neme,
8tr|ng qNeme, Attr|butes ettr ) throws 8AXExcept|on {
8ystem.out.pr|nt|n( "8AX Event: 8TART ELEHENT[ " + |oce|Neme + " }" );
for ( |nt | = 0; | < ettr.getLength(); |++ ){
8ystem.out.pr|nt|n( " ATTR|UTE: " + ettr.getLoce|Neme(|)
+ " vALUE: " + ettr.getve|ue(|) ); } }
pub||c vo|d endE|ement( 8tr|ng nemespeceUR|, 8tr|ng |oce|Neme,
8tr|ng qNeme ) throws 8AXExcept|on {
8ystem.out.pr|nt|n( "8AX Event: EN0 ELEHENT[ " + |oce|Neme + " }" ); }
...
12/11/2003
D
i
d
i
e
r

D
o
n
s
e
z
,

1
9
9
8
-
2
0
0
3
,

X
M
L
125
Exemple SAX
Affichage d un document
pub||c vo|d cherecters( cher[} ch, |nt stert, |nt |ength ) throws 8AXExcept|on {
8ystem.out.pr|nt( "8AX Event: 6hARA6TER8[ " );
try { 0utput8treemwr|ter outw = new 0utput8treemwr|ter(8ystem.out);
outw.wr|te( ch, stert,|ength ); outw.f|ush();
} cetch (Except|on e) { e.pr|nt8teckTrece(); }
8ystem.out.pr|nt|n( " }" ); }
pub||c vo|d set0ocumentLocetor (Locetor |) throws 8AXExcept|on {
outw.wr|te ("L06AT0R n 8Y8 |0: " + |.get8ystem|d() ); out.f|ush (); }
pub||c vo|d process|ng|nstruct|on (8tr|ng terget, 8tr|ng dete) throws 8AXExcept|on {
outw.wr|te("PR06E88: <?"+terget+" "+dete+"?>"); }
12/11/2003
D
i
d
i
e
r

D
o
n
s
e
z
,

1
9
9
8
-
2
0
0
3
,

X
M
L
126
Exemple SAX
Affichage d un document
pub||c stet|c vo|d me|n (8tr|ng ergv [}) {
|f (ergv.|ength != 1) {
8ystem.err.pr|nt|n ("Usege: cmd f||eneme"); 8ystem.ex|t (1); }
try {
8AXPerserFectory fectory = 8AXPerserFectory.new|nstence()
|| fectory.setve||det|ng(true); || set perser ve||det|ng
out = new 0utput8treemwr|ter (8ystem.out, "UTF8");
|| Perse the |nput 8AXPerser
sexPerser = fectory.new8AXPerser();
sexPerser.perse( new F||e(ergv [0}), new 8exEcho() );
} .
12/11/2003
D
i
d
i
e
r

D
o
n
s
e
z
,

1
9
9
8
-
2
0
0
3
,

X
M
L
127
Exemple SAX
Rcupration des exceptions
} cetch (8AXPerseExcept|on spe) { || Error genereted by the perser
8ystem.out.pr|nt|n ("n** Pers|ng error" + ", ||ne " + spe.getL|neNumber ()
+ ", ur| " + spe.get8ystem|d ());
8ystem.out.pr|nt|n(" " + spe.getHessege() );
} cetch (8AXExcept|on sxe) { || Error genereted by th|s epp||cet|on
|| (or e perser-|n|t|e||zet|on error)
Except|on x = sxe;
|f (sxe.getExcept|on() != nu||) x = sxe.getExcept|on().
x.pr|nt8teckTrece();
} cetch (Throweb|e t) {
t.pr|nt8teckTrece ();
}
8ystem.ex|t (0);
}
12/11/2003
D
i
d
i
e
r

D
o
n
s
e
z
,

1
9
9
8
-
2
0
0
3
,

X
M
L
129
L API DOM (Document Object Model)
I 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 larbre
Manipulation de noeud
replacement, ajout de nud, clonage, changement de valeur
Sortie sur un OutputStream, srialisation,
I Classes et interfaces
DocumentBuilderFactory
DocumentBuilder
Document
I Remarque
Limplantation de Sun utilise simplement le parser SAX
avec un DocumentHandler qui construit larbre DOM
12/11/2003
D
i
d
i
e
r

D
o
n
s
e
z
,

1
9
9
8
-
2
0
0
3
,

X
M
L
130
Construction dun objet DOM partir
dune analyse
|mport org.xm|.dom.tree.Xm|0ocument;
0ocumentu||derFectory fectory = 0ocumentu||derFectory.new|nstence();
fectory.setNemespeceAwere(true);
fectory.setve||det|ng(true);
8tr|ng |ocet|on = "http:||myserver|mycontent.xm|";
try {
0ocumentu||der bu||der = fectory.new0ocumentu||der();
0ocument document = bu||der.perse(|ocet|on);
Xm|0ocument xdoc=(Xm|0ocument)document;
|| nev|get|on de | 'erbre 0ocument
|| ou xdoc.wr|te(8ystem.out);
} cetch (8AXExcept|on se) { . }
12/11/2003
D
i
d
i
e
r

D
o
n
s
e
z
,

1
9
9
8
-
2
0
0
3
,

X
M
L
131
Construction dun arbre DOM
0ocumentu||derFectory dbf = 0ocumentu||derFectory.new|nstence ();
0ocumentu||der db = dbf.new0ocumentu||der ();
0ocument doc = db.new0ocument ();
I Cration et ajout dun lment
E|ement root = doc.creeteE|ement ("htm|");
doc.eppend6h||d (root);
root.eppend6h||d (doc.creeteE|ement ("heed"));
root.eppend6h||d (doc.creeteTextNode ("n some dete |s textn "));
root.eppend6h||d (doc.creeteE|ement ("body"));
Text text = doc.creeteTextNode ("n");
root.|nsertefore (text, root.getF|rst6h||d ());
text = doc.creeteTextNode ("n");
root.eppend6h||d (text);
I Cration et modification dun attribut
Attr ettr = doc.creeteAttr|bute ("ettr1"); ettr.setNodeve|ue ("ve|ue of ettr|bute 1");
root.getAttr|butes().setNemed|tem (ettr);
root.setAttr|bute("ettr2", "enother str|ng");
12/11/2003
D
i
d
i
e
r

D
o
n
s
e
z
,

1
9
9
8
-
2
0
0
3
,

X
M
L
132
Manipulation dun objet DOM
I Parcours (rcursif) de larbre
stet|c vo|d trece(Node node, Pr|nt8treem out, |nt |ndent) {
for(|nt |=0; |<|ndent;|++) out.pr|nt(" ");
out.pr|nt|n(node.getNodeNeme()+ " ("+ node.getNodeType() + ")");
|f(node.hes6h||dNodes()) {
NodeL|st n|=node.get6h||dNodes();
for(|nt |=0; |<n|.getLength(); |++) trece(n|.|tem(|),out, |ndent+1);
} } .
0ocument doc = db.new0ocument (); .
trece(doc, 8ystem.out, 0);
I Recherche de nud dans larbre
NodeL|st n|=doc.getE|ementsyTegNeme("REHARK");
for(|nt |=0; |<n|.getLength(); |++) trece(n|.|tem(|),8ystem.out, |ndent+1);
12/11/2003
D
i
d
i
e
r

D
o
n
s
e
z
,

1
9
9
8
-
2
0
0
3
,

X
M
L
133
DOM et les langages de scripting
I Exemple de document
<||st|ngs>
<egent>
<neme>J||| 8m|th Ree| Estete<|neme><phone>123-45-7890<|phone>
<egent>
<||st|ng>
<summery>eeut|fu| 3-R penthouse<|summery>
<eree>west s|de<|eree> <pr|ce>$10 000<|pr|ce>
<bedrooms>3<|bedrooms>
<bethrooms>2<|bethrooms>
<|nformet|on>Exce||ent cond|t|on. very pr|vete end fec|ng south w|th mep|e herdwood f|oors end
veu|ted ce|||ngs. 2 fu|| bethrooms, 3 bedrooms (mester hes we|k-|n c|oset end ensu|te), cerem|c
t||e, ges f|rep|ece, e|erm system, 2 be|con|es, huge storege + |ocker, 2 perk|ng.<||nformet|on>
<|||st|ng>
<||st|ng>
<summery>Pr|ced to se||. 0on't we|t.<|summery>
<eree>Eest s|de<|eree> <pr|ce>$170 000<|pr|ce>
<bedrooms>1<|bedrooms>
<bethrooms>2<|bethrooms>
<|nformet|on>1 & den. 917 s.f. for $170 000. how cen you go wrong. Lerge ||v|ng end d|n|ng eree, 2
beths, we|k through c|oset to ensu|te, custom merb|e end |te||en pedeste| s|nk |n powder room.
6reet buy. Pr|ced to se||.<||nformet|on>
<|||st|ng>
<|||st|ngs>
12/11/2003
D
i
d
i
e
r

D
o
n
s
e
z
,

1
9
9
8
-
2
0
0
3
,

X
M
L
134
DOM et les langages de scripting
I Script ECMA
ver egent=document.getE|ementsyTegNeme("egent")[0};
ver egentneme=egent.f|rst6h||d.f|rst6h||d.dete;
ver egentphone=egent.f|rst6h||d.next8|b||ng.f|rst6h||d.dete;
ver e|=document.documentE|ement.f|rst6h||d;
wh||e (e|) {
|f (e|.nodeType != 1) { e|=e|.next8|b||ng; }
dump(e|.tegNeme + "n");
|f (e|.tegNeme == "L|8T|N6") {
ver eree=e|.getE|ementsyTegNeme("eree")[0}.f|rst6h||d.dete;
ver pr|ce=e|.getE|ementsyTegNeme("pr|ce")[0}.f|rst6h||d.dete;
ver br=e|.getE|ementsyTegNeme("bedrooms")[0}.f|rst6h||d.dete;
ver beth=e|.getE|ementsyTegNeme("bethrooms")[0}.f|rst6h||d.dete;
ver |nfo=e|.getE|ementsyTegNeme("|nformet|on")[0}.f|rst6h||d.dete;
|f (eree=="Eest s|de") {
|| put the ver|ous p|eces |nto the detebese for the Eest s|de ||st|ngs,
|| |nc|ud|ng the egent |nformet|on
} e|se |f (eree=="west s|de") {
|| put the ver|ous p|eces |nto the detebese for the west s|de ||st|ngs,
|| |nc|ud|ng the egent |nformet|on
} || e|se put |n some error messege ebout the eree not be|ng found
}
e|=e|.next8|b||ng;
}
12/11/2003
D
i
d
i
e
r

D
o
n
s
e
z
,

1
9
9
8
-
2
0
0
3
,

X
M
L
135
XML Binding
IMotivation
Faire correspondre des lments avec des objets dans le
programme
DOM typ, Mise en correspondance,
IJava
JAXB, Castor,
IVoir cours XML Binding
12/11/2003
D
i
d
i
e
r

D
o
n
s
e
z
,

1
9
9
8
-
2
0
0
3
,

X
M
L
136
Quelles Applications XML
RDF
RSS
SVG
XHTML
XForm
WML
BPML
ebXML
RosettaNet
BTP, WST
OAGIS
xCBL
B2C EAI B2B
WSDL
SOAP
UDDI
Web Services
BPML
CDF
cXML
XUL
JXTA
P2P
SMIL
PICS
P3P
12/11/2003
D
i
d
i
e
r

D
o
n
s
e
z
,

1
9
9
8
-
2
0
0
3
,

X
M
L
138
RDF Ressource Definition Framework
IObjectifs: associer des proprits descriptives
aux ressources (uri) du Web
IExemple
ISchmas RDF
PICS, DC (Dublin Core), Sitemap, P3P
12/11/2003
D
i
d
i
e
r

D
o
n
s
e
z
,

1
9
9
8
-
2
0
0
3
,

X
M
L
139
RDF Ressource Definition Framework
I Objectifs :
dcrire plus prcisment les ressources disponibles sur le web,
adaptation au contexte XML,
support pour ontologies, thesaurus...
I Principe
Un document est dcrit l'aide d'une 5')GHVFULSWLRQ
utilisant des lments contenus dans un ou plusieurs 5') VFKHPD
I Limitations
Manque de stabilit
normative (en complment de l'volution des autres normes)
au niveau des outils,
au niveau des usages
I Bibliographie
site du W3C http://www.w3.org/RDF/
An Idiots Guide to the Resource Description Framework (Renato
Iannella) http://archive.dstc.edu.au/RDU/reports/RDF-Idiot/
12/11/2003
D
i
d
i
e
r

D
o
n
s
e
z
,

1
9
9
8
-
2
0
0
3
,

X
M
L
140
RDF Ressource Definition Framework
I Exemple
<? xm| vers|on="1.0" ?>
<R0F xm|ns = "http:||w3.org|TR|1999|PR-rdf-syntex-19990105#"
xm|ns:06 = "http:||pur|.org|06#" >
<0escr|pt|on ebout = "http:||dstc.com.eu|report.htm|" >
<06:T|t|e> The Future of Hetedete <|06:T|t|e>
<06:6reetor> Jecky 6ryste| <|06:6reetor>
<06:0ete> 1998-01-01 <|06:0ete>
<06:8ubject> Hetedete, R0F, 0ub||n 6ore <|06:8ubject>
<|0escr|pt|on>
<|R0F>
I Explication
L'objet : http:||dstc.com.eu|report.htm|
est dcrit dans l'lment XML/RDF <Description about= ...> ... </Description>
par les proprits : 7LWOH &UHDWRU'DWH 6XEMHFW
dfinies dans le domaine nominal : xmlns:DC="http://purl.org/DC#"
12/11/2003
D
i
d
i
e
r

D
o
n
s
e
z
,

1
9
9
8
-
2
0
0
3
,

X
M
L
141
RDF Schema
I Objectif : description des proprits RDF
I Exemple
<?xm| vers|on='1.0'?>
<rdf:R0F xm|ns:rdf="http:||www.w3.org|1999|02|22-rdf-syntex-ns#"
xm|ns:rdfs="http:||www.w3.org|TR|1999|PR-rdf-scheme-19990303#"
xm|ns:dc="">
<rdf:0escr|pt|on ebout = "">
<dc:T|t|e> The 0ub||n 6ore E|ement 8et <|dc:T|t|e>
<dc:0ete> 1995-03-01 <|dc:0ete> .
<|rdf:0escr|pt|on>
<rdf:0escr|pt|on |0="T|t|e">
<rdf:type rdf:resource ="http:||www.w3.org|TR|PR-rdf-syntex-ns#Property"|>
<rdfs:|ebe|>T|t|e<|rdfs:|ebe|>
<rdfs:comment>The neme g|ven to the resource.<|rdfs:comment>
<rdfs:|s0ef|nedy rdf:resource = ""|>
<|rdf:0escr|pt|on> ...
<|rdf:R0F>
12/11/2003
D
i
d
i
e
r

D
o
n
s
e
z
,

1
9
9
8
-
2
0
0
3
,

X
M
L
142
RDF Schema
IExplications
xmlns:rdfs introduit l'espace de noms servant dcrire le
schma RDF.
Ce document commence par sa description en RDF Puis il
donne les dfinitions relatives aux 15 lments (dfinis
comme proprits - Property - RDF
12/11/2003
D
i
d
i
e
r

D
o
n
s
e
z
,

1
9
9
8
-
2
0
0
3
,

X
M
L
143
DCD Document Content Description
IDescription XML d une DTD
http://www.w3.org/TR/NOTE-dcd
IExemple
12/11/2003
D
i
d
i
e
r

D
o
n
s
e
z
,

1
9
9
8
-
2
0
0
3
,

X
M
L
144
XHTML
I Appliquer l extensibilit de XML HTML4.01
ajout de nouveaux lments, ...
I3 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">
12/11/2003
D
i
d
i
e
r

D
o
n
s
e
z
,

1
9
9
8
-
2
0
0
3
,

X
M
L
145
XHTML
Les diffrences avec HTML4
I Document correct
pas de chvauchement
<p>|es |ments<em>s 'embo|tent<|em><|p>
au lieu de
<p>|es be||ses<em>se cheveuchent pes<|p><|em>
lments vides
<br|><hr|> au lieu de <br><hr> qui est INCORRECT
valeurs attributs
<teb co|="3"> au lieu de <teb co|=3> qui est INCORRECT
I Style et Script
<scr|pt>
<![60ATA[
... unesceped scr|pt content ...
}}>
<|scr|pt>
12/11/2003
D
i
d
i
e
r

D
o
n
s
e
z
,

1
9
9
8
-
2
0
0
3
,

X
M
L
146
XHTML - Exemple
I Document XML utilisant des lments du domaine de
noms XHTML
<?xm| vers|on="1.0" encod|ng="UTF-8"?>
<!-- |n|t|e||y, the defeu|t nemespece |s "books" -->
<book xm|ns='urn:|oc.gov:books'
xm|ns:|sbn='urn:|8N:0-395-3341-' xm|:|eng="en" |eng="en">
<t|t|e>6heeper by the 0ozen<|t|t|e>
<|sbn:number>158491379<||sbn:number>
<notes>
<!-- meke hTHL the defeu|t nemespece for e hypertext commentery -->
<p xm|ns='http:||www.w3.org|1999|xhtm|'>
Th|s |s e|so eve||eb|e <e href="http:||www.w3.org|">on||ne<|e>.
<|p>
<|notes>
<|book>
12/11/2003
D
i
d
i
e
r

D
o
n
s
e
z
,

1
9
9
8
-
2
0
0
3
,

X
M
L
147
XHTML - Exemple
I Document XHTML utilisant la recommandation MathML
<htm| xm|ns="http:||www.w3.org|1999|xhtm|" xm|:|eng="en" |eng="en">
<heed><t|t|e>A Heth Exemp|e<|t|t|e><|heed>
<body>
<p>The fo||ow|ng |s HethHL merkup:<|p>
<meth xm|ns="http:||www.w3.org|1998|Heth|HethHL">
<epp|y> <|og|>
<|ogbese>
<cn> 3 <|cn>
<||ogbese>
<c|> x <|c|>
<|epp|y>
<|meth>
<|body><|htm|>
12/11/2003
D
i
d
i
e
r

D
o
n
s
e
z
,

1
9
9
8
-
2
0
0
3
,

X
M
L
148
XUL (XML based User Interface Language)
http://www.xulplanet.com
IWidget des GUI (Interface graphique)
Support par NS Communicator 6 et Mozilla
IExemple
12/11/2003
D
i
d
i
e
r

D
o
n
s
e
z
,

1
9
9
8
-
2
0
0
3
,

X
M
L
149
XForm (W3C)
IDfinition abstraite des formulaires
Limitation du <FORM> HTML
Ne dfinit lapparence GUI
Functionnalits : Dpendances entre les entres,
IExemple
12/11/2003
D
i
d
i
e
r

D
o
n
s
e
z
,

1
9
9
8
-
2
0
0
3
,

X
M
L
151
Les Outils
I Editeurs XML
http://www.alphaWorks.ibm.com/tech/visualxmltools , ...
I Browsers XML
W3C Amaya, MS IE5, Mozilla, Opera
I Parseurs XML/DOM
MS, Java API for XML Parsing (JAXP).
Parsers XML pour lembarqu (NanoXML, TinyXML, kXML)
I Compilateurs XML/DOM
Enhydra
I Transformateurs XSL
MS, XT, Xalan (xml.apache.org)
I Serveurs Web
http://technet.oracle.com/tech/xml/xsql_servlet/
servlet qui interroge une BD en SQL et formate le rsultat en XML
I SGBD XML
Oracle 8i, Ardent, Software AG TAMINO, ObjectStore, ...
12/11/2003
D
i
d
i
e
r

D
o
n
s
e
z
,

1
9
9
8
-
2
0
0
3
,

X
M
L
153
Apache XML Project (http://xml.apache.com)
IXerces - XML parsers in Java, C++ (with Perl and
COM bindings)
IXalan - XSLT stylesheet processors, in Java and
C++
ICocoon - XML-based web publishing, in Java
IFOP - XSL formatting objects, in Java
IXang - Rapid development of dynamic server
pages, in Java
ISOAP - Simple Object Access Protocol
12/11/2003
D
i
d
i
e
r

D
o
n
s
e
z
,

1
9
9
8
-
2
0
0
3
,

X
M
L
154
XSP
I Voir xml.apache.org
12/11/2003
D
i
d
i
e
r

D
o
n
s
e
z
,

1
9
9
8
-
2
0
0
3
,

X
M
L
155
Scripting Serveur et et XML/DOM
IInconvnients des solutions prcdentes
Script gnrant du HTML
gnration par programmation ( la main )
Script nich dans un document HTML
Utilisation d outils auteur pour crer les pages, OUI !
MAIS l insertion de scripts empche de retravailler les pages
IAlternative
Utilisation du modle DOM dans les scripts
www.enhydra.org
12/11/2003
D
i
d
i
e
r

D
o
n
s
e
z
,

1
9
9
8
-
2
0
0
3
,

X
M
L
156
Scripting Serveur et et XML/DOM
Principe (i)
I Principe : le script ne manipule que des objets DOM
id=1
Base
de
Donnes
id=1
XMLC
SQL
toString()
HTML, XML
(ID, CLASS)
HTML, XML
statique
+
gnr
.html
Objet
DOM/XML
Objet
DOM/XML
Assemblage
des objets DOM
par le script
DTD
HTML
S
t
a
t
i
q
u
e
D
y
n
a
m
i
q
u
e
.html
12/11/2003
D
i
d
i
e
r

D
o
n
s
e
z
,

1
9
9
8
-
2
0
0
3
,

X
M
L
157
Scripting Serveur et et XML/DOM
Cycle de Dveloppement (i)
I 1) Conception de document HTML avec des outils auteur
Linfographiste concoit le document avec une touche graphique et des
animations standards (bannire, boutons anims, menu, )
Certaines zones du document seront gnrs la vole par un script. Ces
zones sont repres par des attributs ID ou CLASS.
Le document pourra tre modifi ultrieurement (aprs 4)
I 2) Compilation des pages HTML en objet Java DOM
le document HTML est compil en une classe Java instanciant des objets
DOM/XML
ncessite parfois une mise en conformit (DTD/HTML4) du source HTML
produit par les outils auteur
packages org.w3c.dom et org.w3c.dom.html
12/11/2003
D
i
d
i
e
r

D
o
n
s
e
z
,

1
9
9
8
-
2
0
0
3
,

X
M
L
158
Scripting Serveur et et XML/DOM
Cycle de Dveloppement (ii)
I 3) Dveloppement 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 identifis (ID ou CLASS ) par l infographiste
correspondent aux zones qui vont tre gnrs la vole.
Le script modifie ou remplace ces sous-arbres partir de de sous-arbres
gnrs partir de donnes retires du Systme d Information (
l excution).
I 4) Requte
Le script assemble les sous-arbre DOM gnrs avec l arbre DOM
statique.
Le script rpond la requte du client en retournant
l arbre DOM srialis dans le cas d une rponse RMI
mthode writeObject()
une gnration texte de l arbre DOM dans le cas d une rponse HTTP
mthode toString()
12/11/2003
D
i
d
i
e
r

D
o
n
s
e
z
,

1
9
9
8
-
2
0
0
3
,

X
M
L
159
Environnement dexcution
(Serveur Servlet, Serveur RMI, )
Scripting Serveur et et XML/DOM
Cycle de Dveloppement (iii)
HTML
(ID, CLASS)
Compillateur
XML/DOM
(XMLC, )
HTML
conforme
DTD HTML4.0
Mise en
Conformit
DTD HTML4.0
Base
doc.html doc.html
Outil Auteur
(DreamWeaver, )
classe Java
instanciant
des objets DOM
dochtml.java
classe Java
rpondant
une requte
doc.java
dochtml.class
doc.class
Schema
.ser
vers un
client RMI
.html
vers un
browser Web
c
f
d d
e
12/11/2003
D
i
d
i
e
r

D
o
n
s
e
z
,

1
9
9
8
-
2
0
0
3
,

X
M
L
160
XML dans les produits MicroSoft
IObjets ActiveX
"Microsoft.XMLDOM"
"Microsoft.XMLHTTP"

12/11/2003
D
i
d
i
e
r

D
o
n
s
e
z
,

1
9
9
8
-
2
0
0
3
,

X
M
L
161
XML dans IE5.x
HTTP POST dun document XML
<hTHL><00Y>
<86R|PT>
|| run on|y w|th H8 |E 5.x
funct|on PostXm|0oc (ect|onur|,xm|doc) {
ver xm|http = new Act|veX0bject ("H|crosoft.XHLhTTP");
xm|http.open("P08T", ect|onur|,fe|se);
xm|http.send(xm|doc);
return xm|http.responseXHL;
}
funct|on subm|t|nfo(){
ver xm|doc = new Act|veX0bject ("H|crosoft.XHL00H");
xm|doc.esync = fe|se;
xm|doc.|oedXHL(xm|docText.ve|ue);
ver response = PostXm|0oc("|serv|et|postxm|doc", xm|doc);
e|ert(response.documentE|ement.xm|);
}
<|86R|PT>
.
12/11/2003
D
i
d
i
e
r

D
o
n
s
e
z
,

1
9
9
8
-
2
0
0
3
,

X
M
L
162
XML dans IE5.x
HTTP POST dun document XML
.
<b>Type |n en XHL 0ocument to Post:<b><br>
<TEXTAREA rows="12" co|s="70" NAHE="xm|docText">
<s||deshow>
<s||de>
<source>|mg|equebe|estpeu|.jpg<|source>
<t|t|e>e|e 8e|nt Peu|<|t|t|e>
<descr|pt|on>
weterco|or of e|e 8e|nt Peu|, 0uebec, 6enede, August 1997.
<|descr|pt|on>
<|s||de>
<|s||deshow>
<|TEXTAREA>
<P><|NPUT TYPE=button ve|ue="Post XHL 0ocument" onc||ck="subm|t|nfo()">
<|00Y>
<|hTHL>
12/11/2003
D
i
d
i
e
r

D
o
n
s
e
z
,

1
9
9
8
-
2
0
0
3
,

X
M
L
163
Binarisateur XML
IReprsentation binaire (bytecode) de documents
XML
IMotivation
Version plus compacte de documents XML
pour les transferts et lempreinte mmoire (informatique
embarque)
IUtilisations
WML, MPEG7 (iTV),
12/11/2003
D
i
d
i
e
r

D
o
n
s
e
z
,

1
9
9
8
-
2
0
0
3
,

X
M
L
164
Bibliographie
I Voir
Cours BD et XML , Scripting Serveur , HTML
I 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
http://www.alphaworks.ibm.com
http://www.xmlsoftware.com
news://comp.text.xml
12/11/2003
D
i
d
i
e
r

D
o
n
s
e
z
,

1
9
9
8
-
2
0
0
3
,

X
M
L
165
Bibliographie
I Elliotte Rusty Harold , XML Bible , 1015 pages July 1999, IDG Books
Worldwide; ISBN: 0764532367
la bible : il existe la version franaise (ISBN 2-7464-0070-7)
I Brett McLaughlin "Java and XML", 1st Edition June 2000, ISBN 0-596-00016-
2, 498 pages, Edition OREILLY &ASSOCIATES
I J.C. Bernadac, F. Knab, XML, Construire une Application , Ed. Eyrolles,
1999, ISBN 2-212-09081-1
assez complet et 2 tudes de cas compltes
en environnement ASP et Servlet
I Benot Marchal, XML by Example - 425 pages 1 edition, December 1999, Que
Education & Training; ISBN: 0789722429
I Charles F. Goldfarb, "The XML Handbook", 2
nd
edition, 1999, Ed Prentice Hall,
ISBN 0-13-014714-1
I M. Floyd, Building Web Sites with XML , Ed Prentice Hall 1999, ISBN 0-13-
086601-6
I Michael Kay, "XSLT programmers Reference", 2000, Ed Wrox Press, ISBN
I Ian Graham, "XHTML 1.0 language and design sourcebook", 2000, Ed Wiley
12/11/2003
D
i
d
i
e
r

D
o
n
s
e
z
,

1
9
9
8
-
2
0
0
3
,

X
M
L
166
Bibliographie
Andrew Patzer , "Programmation Java ct 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
12/11/2003
D
i
d
i
e
r

D
o
n
s
e
z
,

1
9
9
8
-
2
0
0
3
,

X
M
L
167
Bibliographie
IElliotte Rusty Harold, W. Scott Means, XML in a
Nutshell, 2nd Edition, A Desktop Quick
Reference , Ed Oreilly
IHoward Katz, Don Chamberlin, Denise Draper,
Mary Fernandez, Michael Kay, Jonathan Robie,
Michael Rys, Jerome Simeon, Jim Tivy, Philip
Wadler, XQuery from the Experts: A Guide to
the W3C XML Query Language , Ed Addison-
Wesley, Aout 2003, ISBN 0321180607, 512 pp

You might also like