Explorer les Livres électroniques
Catégories
Explorer les Livres audio
Catégories
Explorer les Magazines
Catégories
Explorer les Documents
Catégories
;0/
H;WHQVLEOH0DUNXS/DQJXDJH
&HFRXUVHVWVXU
KWWSZZZDGHOHLPDJIUaGRQVH]FRXUV[POSGI
Didier DONSEZ
Université Joseph Fourier
IMA –IMAG/LSR/ADELE
'LGLHU'RQVH]#LPDJIU
'LGLHU'RQVH]#LHHHRUJ
2
: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/
Au sommaire
■ 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
■ 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
Vérifié Doc
PS
SGML
• Entités
• [PO instance d ’entité
9
'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
■ 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
■ Document Standalone
• Les documents sont bien formés (ZHOOIRUPHG),
■ XML Schema
• Schema des documents
• Exprimé en syntaxe XML et extensible (contrairement à la DTD)
JUHHWLQJ!+HOOREU!ZRUOGJUHHWLQJ!
16
[VLQR1DPHVSDFH6FKHPD/RFDWLRQ JUHHWLQJ[VG
!
JUHHWLQJ!+HOOREU!ZRUOGJUHHWLQJ!
17
Exercice
Donnez un document XML représentant cette recette
'LGLHU'RQVH];0/
18
■ 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
■ 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
■ 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/
• 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,21J]LS_FRPSUHVV5(48,5('!
'LGLHU'RQVH];0/
$77/,67DUFKLYHFRGDJHJ]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
$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
«
$77/,67 LQJUHGLHQW
PHVXUH&'$7$5(48,5('
XQLWH &'$7$
XQLWH
(17,7<GHYHORSSHPHQW
,*125(
!
'LGLHU'RQVH];0/
(17,7<ILQDO
,1&/8'(
!
>,*125(> (/(0(17GRVVLHU$1<! @@!
>,1&/8'(> (/(0(17GRVVLHUILFKLHU
_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
[POVSDFHGHIDXOW_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
■ 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>
>Stop the planet <pic src="earth"/>,
'LGLHU'RQVH];0/
XML NameSpaces
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
XML Catalog
■ 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/
■ 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
■ 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
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/
/ 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/
■ 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
■ 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!
^FRXQWDXWKRUV`! 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
• 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/
■ A lire
• 5HFRPPDQGDWLRQ;/LQN GX:&HWOH&KDSLWUHGH© ;0/%LEOH ª
72
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
SUH!
[LLQFOXGHKUHI VXEW[W SDUVH WH[W!
SUH!
S! 7KH ;0/GRFXPHQW FRQWDLQV S!
[LLQFOXGHKUHI VXE[PO[SRLQWHUFKDSWHUS>@!
GRFXPHQW!
74
■ 2 parties
• XSL-T Transformation (de XML vers XML >;+70/:0/69*«@)
• XSL-FO Formatting Object (de XML vers non-XML >363')57)«@)
75
■ 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
■ 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/
■ 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 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/
Structure 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/
[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!
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 !
'LGLHU'RQVH];0/
%/2&.&23<5,*+7 ^FRS\ULJKW`!«%/2&.!
[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!
■ Import
• peut produire des conflits entre les règles
• précedence à la dernière règle importée donc (définie)
■ Inclusion
• remplace les règles (même match) de la feuille par ceux de la
feuille incluse
101
[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
GRF!
103
[VOWHPSODWH!
[VOWHPSODWH PDWFK EDU!
IRREDURXW![VODSSO\WHPSODWHV!IRREDURXW!
[VOWHPSODWH!
[VOVW\OHVKHHW!
104
IRREDURXW!IRRVXEHOHPHQWWH[WQRGHIRREDURXW!
IRRRXW!
105
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
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
■ Motivation
• transformation d ’ un document XML
vers un document non-XML
• 57):RUG3RVW6FULSW3')/D7H[«
■ Transformateur FO
'LGLHU'RQVH];0/
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
GULYHUVHW5HQGHUHURUJDSDFKHIRSUHQGHUSGI3')5HQGHUHUYHUVLRQ
GULYHUDGG(OHPHQW0DSSLQJRUJDSDFKHIRSIR6WDQGDUG(OHPHQW0DSSLQJ
GULYHUDGG(OHPHQW0DSSLQJRUJDSDFKHIRSVYJ69*(OHPHQW0DSSLQJ
'LGLHU'RQVH];0/
IRURRW[POQVIR KWWSZZZZRUJ;6/)RUPDW!
IRVLPSOHSDJHPDVWHU!
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"!
+($'/,1(^IRQWVL]HHPIRQWVW\OH LWDOLF `
$57,&/(+($'/,1($87+253$5$^ PDUJLQHP`
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/
API XML
DOM Level 1
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/
■ Avantages DOM
• navigation dans un arbre
d ’ éléments
124
■ 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
■ 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\VWHPRXWSULQWOQ6$;(YHQW67$57'2&80(17`
SXEOLF YRLGHQG'RFXPHQW WKURZV 6$;([FHSWLRQ^
6\VWHPRXWSULQWOQ6$;(YHQW(1''2&80(17`
SXEOLF YRLGVWDUW(OHPHQW6WULQJ QDPHVSDFH85,6WULQJ ORFDO1DPH
6WULQJ T1DPH$WWULEXWHVDWWU WKURZV 6$;([FHSWLRQ^
6\VWHPRXWSULQWOQ6$;(YHQW67$57(/(0(17> ORFDO1DPH @
IRU LQW L L DWWUJHW/HQJWKL^
6\VWHPRXWSULQWOQ$775,%87( DWWUJHW/RFDO1DPHL
9$/8( DWWUJHW9DOXHL``
'LGLHU'RQVH];0/
6\VWHPH[LW
`
132
■ 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$ZDUHWUXH
IDFWRU\VHW9DOLGDWLQJWUXH
6WULQJORFDWLRQ KWWSP\VHUYHUP\FRQWHQW[PO
WU\ ^
'RFXPHQW%XLOGHUEXLOGHU IDFWRU\QHZ'RFXPHQW%XLOGHU
'RFXPHQWGRFXPHQW EXLOGHUSDUVHORFDWLRQ
;PO'RFXPHQW[GRF ;PO'RFXPHQWGRFXPHQW
QDYLJDWLRQGHO ·DUEUH'RFXPHQW
RX [GRFZULWH6\VWHPRXW
'LGLHU'RQVH];0/
■ 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
■ Script ECMA
YDUDJHQW GRFXPHQWJHW(OHPHQWV%\7DJ1DPHDJHQW>@
YDU DJHQWQDPH DJHQWILUVW&KLOGILUVW&KLOGGDWD
YDU DJHQWSKRQH DJHQWILUVW&KLOGQH[W6LEOLQJILUVW&KLOGGDWD
YDU HO GRFXPHQWGRFXPHQW(OHPHQWILUVW&KLOG
ZKLOH HO^
LIHOQRGH7\SH ^ HO HOQH[W6LEOLQJ`
GXPSHOWDJ1DPH ?Q
LIHOWDJ1DPH /,67,1*^
YDU DUHD HOJHW(OHPHQWV%\7DJ1DPHDUHD>@ILUVW&KLOGGDWD
YDU SULFH HOJHW(OHPHQWV%\7DJ1DPHSULFH>@ILUVW&KLOGGDWD
YDU EU HOJHW(OHPHQWV%\7DJ1DPHEHGURRPV>@ILUVW&KLOGGDWD
YDUEDWK HOJHW(OHPHQWV%\7DJ1DPHEDWKURRPV>@ILUVW&KLOGGDWD
YDULQIR HOJHW(OHPHQWV%\7DJ1DPHLQIRUPDWLRQ>@ILUVW&KLOGGDWD
LIDUHD (DVWVLGH^
SXW WKHYDULRXVSLHFHVLQWRWKHGDWDEDVH IRU WKH(DVWVLGH OLVWLQJV
LQFOXGLQJWKH DJHQWLQIRUPDWLRQ
'LGLHU'RQVH];0/
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/
: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
■ Schémas RDF
• PICS, DC (Dublin Core), Sitemap, P3P
142
■ 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/
■ 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
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
■ Exemple
'LGLHU'RQVH];0/
147
XHTML
■ 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/
XHTML - Exemple
[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
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)
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
XSP
■ Voir xml.apache.org
'LGLHU'RQVH];0/
158
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'pYHORSSHPHQWL
■ 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/
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
■ 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
[POKWWSRSHQ3267 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/
Binarisateur XML
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
Bibliographie
Philip Wadler, « XQuery from the Experts: A Guide to the W3C XML
Query Language », Ed Addison-Wesley, Aout 2003, ISBN
0321180607, 512 pp