Upload
buinhi
View
245
Download
0
Embed Size (px)
Transformations XML: XPath et
XSL-XSLT
Stphane Crozat
Ingnierie Documentairehttp://doc.crzt.fr
14 septembre 2016
Table des matires
I - Introduction XSL-XSLT 4
1. Un langage pour publier les documents XML ....................................................................... 4
2. Dfinition de XSL-XSLT .......................................................................................................... 4
3. Principe de XSL-XSLT ............................................................................................................. 5
II - Programmation XSL-XSLT 6
1. L'arbre du document XML ....................................................................................................... 6
2. Introduction XPath ................................................................................................................ 7
3. Syntaxe XPath ............................................................................................................................ 8
4. Syntaxe gnrale XSL-XSLT .................................................................................................. 10
5. Principales instructions XSLT ................................................................................................. 11
6. Fonctionnement des programmes XSL-XSLT ....................................................................... 12
7. Exemple: Un programme XSLT pour gnrer du HTML ................................................. 13
8. XSLT et namespaces ................................................................................................................ 15
9. Transformation identit ............................................................................................................ 16
10. Transformation substitution de namespace .......................................................................... 17
11. Approfondissement ................................................................................................................... 18
III - Exercices 20
1. Exercices XSLT ......................................................................................................................... 21
1.1. Exercice: CV .................................................................................................................................................... 211.2. Exercice: Pome ............................................................................................................................................... 221.3. Exercice: Glossaire II ..................................................................................................................................... 241.4. Exercice: Namespaces et FO ......................................................................................................................... 251.5. Exercice: Bulletins mto ................................................................................................................................ 26
2. Quiz XSLT et XPath .............................................................................................................. 29
2.1. Exercice .............................................................................................................................................................. 292.2. Exercice .............................................................................................................................................................. 302.3. Exercice .............................................................................................................................................................. 31
Solutions des exercices 33
Bibliographie 42
Introduction XSL-XSLT
4
-
-
-
1. Un langage pour publier les documents XML
XML lorsqu'il est utilis pour dfinir des formats documentaire mtier est un format de de l'information, et non un format de (de prsentation) de cette reprsentation publication
information: donc un tel fichier XML .n'est pas utilisable tel que par un lecteur
XML ne peut donc tre utilis pour des langages abstrait que si l'on est capable de transformer les documents sources en document publis lisibles grce un format de prsentation : HTML par exemple dans le cas de publication Web, ou PDF pour l'impression.
2. Dfinition de XSL-XSLT
XSL-XSLT est une partie du standard W3C XSL qui a trait la transformation des documents XML (l'autre partie tant XSL-FO).
XSL-XSLT est un langage de programmation dclaratif crit en XML (un programme XSL-XSLT est un document XML).
XSL-XSLT est langage de manipulation de document XML (fond sur XPath et sur le modle arborescent de reprsentation des documents XML)XSl-XSLT est utilis pour transformer un document XML source dans un autre format, typiquement HTML, mais aussi tout autre format cod sur des caractres dont la syntaxe est connue.XSL-XSLT est aussi utilis pour faire des changements de schma XML (export d'un XML vers un autre XML structur diffremment) par exemple pour changer des donnes selon un standard.
On parle souvent (par simplification) de XSL ou de XSLT pour dsigner XSL-XSLT et de FO pour dsigner XSL-FO.
XSL utilis seul dsigne donc par convention XSL-XST (et non XSL-FO).
Introduction XSL-XSLT I
Dfinition: XSL-XSLT
Remarque : XSL-XSLT, XSL-FO, XSLT, XSL, FO
Principe de XSL-XSLT
5
1. 2.
1. 2.
3. Principe de XSL-XSLT
XSL-XSLT fonctionne selon le principe suivant:
Il prend en entre un fichier XML bien formIl livre en sortie un fichier texte (XML, HTML ou texte sans balise)
L'algorithme gnral de XSL-XSLT est:
Il slectionne ( ) les lments XML du fichier source.matchPour chaque lment reconnu il gnre une sortie sur le fichier cible.
Un programme XSL-XSLT est compos d'une succession de rgles.
Chaque rgle est indpendante des autres et en charge de slectionner un lment dans la source et d'effectuer une criture dans la cible.
Sources :
12 3
Rgle XSL-XSLT :
1 =2 BONJOUR3
Rsultat :
1 BONJOUR BONJOUR
Algorithme
Notion de rgle
Exemple : Application d'une rgle XSL-XSLT
=BONJOUR
BONJOUR BONJOUR
Programmation XSL-XSLT
6
---
1. L'arbre du document XML
Il est possible de reprsenter un document XML sous forme d'arbre, tel que:
L'arbre possde une racine qui a comme fils l'lment racine/l'lment racine est l'lment du document XML qui contient tous les autreschaque nud a comme fils les lments et le texte qu'il contient, ainsi que ses attributs.
1 2 = =3 4 5 L'assurance de la responsabilit de voisinage6 21/02/017 AEA8 1.009
10 11 12 13 Cette garantie est appele : recours des voisins et des tiers.14 15 L'image suivante = =
= montre la garantie.tiers" type "image"/> 16 17 18 19
1 /2 |document3 |@modele = "ULCoursGeneral"4 |@code = "BP-Incendie3_S1_E2_UL1"5 |entete6 |identification7 |titre 8 |text() = "L'assurance de ..."
Programmation XSL-XSLT II
Exemple : Fichier XML
Exemple : Arbre XML
= =
L'assurance de la responsabilit de voisinage 21/02/01 AEA 1.00 Cette garantie est appele : recours des voisins et des tiers. L'image suivante = =
/|document|@modele = "ULCoursGeneral"|@code = "BP-Incendie3_S1_E2_UL1"|entete|identification|titre |text() = "L'assurance de ..."
Introduction XPath
7
----
-
-
9 |date 10 |text() = "21/02/01"11 |auteur12 |text() = "AEA"13 |version14 |text() = "1.00"15 |corps16 |contenu17 |paragraphe18 |text() = "Cette garantie ..."19 |remarque20 |paragraphe21 |text() = "L'image suivante"22 |ressource23 |@URIsrc = "img07.jpg"24 |@titre = "Recours des voisins..."25 |@type = "image"26 |text() = "montre la garantie."
L'ensemble des nuds de l'arbre d'un document est muni d'un ordre, qui est celui de l'ordre dans le document XML srialis.
2. Introduction XPath
XPath est un langage d'expressions permettant de pointer sur n'importe quel lment d'un arbre XML depuis n'importe quel autre lment de l'arbre.
Une expression XPath peut-tre (sa rsolution est d'un contexte ou absolue indpendantenud courant : elle commence dans ce cas par ./Une expression XPath peut-tre (sa rsolution est d'un contexte ou nud relative dpendantecourant : elle ne commence dans ce cas pas par , elle peut commencer par (syntaxe / ./dveloppe).
Une expression XPath renvoie
un , ou ensemble de nuds, c'est dire un sous-arbre de l'arbre du documentnode-setune chane de caractresun boolenun rel
1 /document/entete/identification/titre2 /document/@modele3 corps//contenu4 contenu/*
Remarque : Ordre des nuds
Dfinition: Expression XPath
Fondamental
Exemple : Exemples d'expressions XPath
|date |text() = "21/02/01"|auteur|text() = "AEA"|version|text() = "1.00"|corps|contenu|paragraphe|text() = "Cette garantie ..."|remarque|paragraphe|text() = "L'image suivante"|ressource|@URIsrc = "img07.jpg"|@titre = "Recours des voisins..."|@type = "image"|text() = "montre la garantie."
/document/entete/identification/titre/document/@modelecorps//contenucontenu/*
Syntaxe XPath
8
---
---
-------
5 contenu/remarque[1]6 ../paragraphe7 @type
root nodeselement nodestext nodesattribute nodesnamespace nodesprocessing instruction nodescomment nodes
http://www.w3.org/TR/xpath/#data-model
Pour une introduction XPath: pp.123-129Brillant07 **
L'arbre du document XML (cf. p.6)
Syntaxe XPath (cf. p.8)
3. Syntaxe XPath
Une expression XPath est compose de plusieurs successifs spars par des .pas de localisation /
Un pas de localisation est caractris par :
un axe,un test de nud,un prdicat (ventuellement aucun ou plusieurs).
1 pas-de-localisation-1/.../pas-de-localisation-N
1 axe::test-de-nud[prdicat]
: slectionne la racine (expression absolue)/ : slectionne le nud courant (expression relative).
ou ou : slectionne les lments fils "x"child::x x ./x
Complment : Types de nuds XPath
Complment
Complment : Voir aussi
Dfinition: Pas de localisation
Syntaxe : Expression XPath
Syntaxe : Pas de localisation
Syntaxe : Axes et tests de nuds
contenu/remarque[1]../paragraphe@type
pas-de-localisation-1/.../pas-de-localisation-N
axe::test-de-nud[prdicat]
http://www.w3.org/TR/xpath/#data-model
Syntaxe XPath
9
---
-
-------
- ou ou : slectionne les lments y fils de l'lment fils x child::x/child::y ./x/y x/y(petits fils)
ou ou : slectionne l'attribut "a" du nud courantattribute::a ./@a @a ou ou : slectionne tous les lments filschild::* ./* *
ou ou : slectionne tous les attributsattribute::* ./*@ *@ ou ou : slectionne les nuds de type textechild::text() ./text() text()
ou : slectionne le pre "x" ( slectionne les anctres "x")parent::x ../x ancestor::x ou : slectionne tous les descendants "x" (enfants, petits enfants, etc.)descendant::x .//x
, : slectionne les nuds prcdents ou suivants dans le preceding::x following::xdocument (ordre), (et des attributs) l'exclusion des anctres
, : similaire et preceding-sibling::x following-sibling::x preceding, mais pour les nuds de mme niveau uniquement ("fratrie")following
* slectionne les nuds de type lment, mais pas les attributs (slectionns par ), ni les nuds @*de type texte slectionns par .text()
Pour bien visualiser le fonctionnement des axes, voir , p.124 (Figures 5-XML: Cours et exercices **1 et 5-2).
Carr rouge: Le point de dpartCarr gris numrot: Nud slectionn (avec son ordre de slection)Carr gris non numrot; Nud non slectionn
Illustration des axes XPath (Brillant 07)
Attention : * , @*, text()
Complment : Axes
Syntaxe gnrale XSL-XSLT
10
--
--
-
----- , , etc. : slectionne le premier x, le second x, etc.x[1] x[2]
: slectionne le dernier xx[last()] : slectionne les x tels que leur attribut a est gal "valeur"x[@a='valeur']
: slectionne les x tels qu'ils ont un lment fils y gal 1x[y=1] : slectionne tous les x tels que leurs attributs a et b sont x[@a='v1' and @b='v2']
respectivement gaux v1 et v2 : slectionne tous les x tels qu'ils possde un lment fils y ou zx[y or z]
Il est possible d'unifier deux expressions XPath en utilisant :|
x | y: slectionne les lments x les lments yetx[y] | x[z]: slectionne les lments x tels qu'ils contiennent un y ou un z (quivalent ici )x[y or z]
La fonction permet de renvoyer le nud courant dans le contexte d'une excution current()XSLT.
Cela permet de diffrencier:
: Les elem1 qui ont deux attributs att1 et att2 gauxelem1[@att1=@att2]et : Les elem1 qui ont un attribut att1 gal l'attribut elem1[@att1=current()/@att2]att2 du nud courant
http://fr.selfhtml.org/xml/representation/fonctionsxpath.htm
4. Syntaxe gnrale XSL-XSLT
1 2 = = 3 = = =4 =5 ...6 7 =8 ...9
10 ...11
Exemple : Prdicats
Exemple : Union
Complment : current()
Complment : Liste des fonctions XPath
Syntaxe : Structure gnrale d'un programme XSl-XSLT
= =
= = = = ... = ... ...
http://fr.selfhtml.org/xml/representation/fonctionsxpath.htm
Principales instructions XSLT
11
---
-
-
---
-
-
1 =2 Instruction XSLT et/ou gnration de texte sur la sortie3
5. Principales instructions XSLT
: Relance les rgles du programme sur le sous-arbre point par le (fondement de la rcursivit)select
: Gnre le contenu dans le nud ou attribut textepoint par le select
: Gnre le texte contenu dans le nud ou attribut point par le XPath entre {XPATH}accolades (alternative utiliser dans la gnration d'attributs xsl:value-ofexclusivement, par exemple :
: Gnre le point par le sous-arbre select: Ne s'excute que si est vrai... test
: Excute pour chaque sous-...arbre renvoy par le select
o chemin d'accs permet d'accder un fichier sur le disque.document(chemin-accs)
Par exemple:
: Tous les lments prsents dans le fichier document("c:\monfichier.xml")//x x.monfichier.xml
: La racine du document XML point par l'expression document(child::source)/*XPath .child::source
contenu
valeur
chane de caractre
Fonctionnement des programmes XSL-XSLT
12
1.
2.
3.
http://www.daniel-lemire.com/inf6450/mod3/xsltenbref.xhtml
http://personnel.univ-reunion.fr/fred/Enseignement/XML/intro-xslt.html
6. Fonctionnement des programmes XSL-XSLT
1 =2 ...3 =4 ...5 6 =7 ...8 =9 ...
1011 =12 ...13 =14 ...15
XSLT comporte trois rgles par dfaut qui sont appliques quand aucune rgle du programme n'est slectionne.
La premire rgle s'applique la racine et tous les lments et dclenche un appel rcursif sur tous les fils du nud courant :
La deuxime rgle s'applique aux nuds texte et aux attributs et insre le rsultat textuel de ces nuds dans le document rsultat :
La troisime rgle s'applique aux commentaires et aux instructions de traitement et les ignore :
1 2
Il faut donc prendre garde aux rgles par dfaut, sources d'effets de bord.
La rcursivit
Rgles par dfaut
Exemple : Le programme XSLT minimal
Attention
= ... = ...
= ... = ...
= ... = ...
http://www.daniel-lemire.com/inf6450/mod3/xsltenbref.xhtmlhttp://personnel.univ-reunion.fr/fred/Enseignement/XML/intro-xslt.html
Exemple: Un programme XSLT pour gnrer du HTML
13
-
-
-
--
Veiller bien traiter tous les cas.
Court-circuiter les rgles par dfaut, en gnrant des messages d'erreurs sur la sortie.
: permet de surcharger les rgles de priorit par dfautpriority: permet de dfinir plusieurs rgles pour une mme prmisse et de choisir explicitement mode
celle que l'on veut au moment de l'appel: permet de dfinir des nomms, qui sont appels explicitement (comme des name templates
fonctions) par l'instruction et non plus seulement par le moteur de rcursivit.
Si un attribut est dfini sur la rgle, la rgle est prioritaire, l'attribut le plus lev priorityest prioritaire sur le moins lev.Sinon, c'est celle dont le XPath est le plus d'abord (expression d'un axe, d'un spcifiqueprdicat)Exemple: http://www.zvon.org/xxl/XSLTutorial/Output_fre/example69_ch2.html
7. Exemple: Un programme XSLT pour gnrer du HTML
1 2 =3456 =7 XML est un format de reprsentation de l'information.
8 XML n'est pas un format de prsentation.9
10111213 =14 XSLT est un langage de manipulation de documents XML.
15 XSLT est utilis pour exporter une source XML sous un autre format, par exemple HTML.
1617
Conseil
Mthode
Complment : Mode, priorit, rgles nommes
Complment : Priorit entre les rgles
Exemple : Fichier XML source
=
=XML est un format de reprsentation de l'information.
XML n'est pas un format de prsentation.
=XSLT est un langage de manipulation de documents XML.
XSLT est utilis pour exporter une source XML sous un autre format, par exemple HTML.
http://www.zvon.org/xxl/XSLTutorial/Output_fre/example69_ch2.html
Exemple: Un programme XSLT pour gnrer du HTML
14
123456 XSLT7 = =89
10111213 XSLT : Un besoin14 XML est un format de reprsentation de l'information.15 XML n'est pas un format de prsentation.16 XSLT : Un langage17 XSLT est un langage de manipulation de documents XML.18 XSLT est utilis pour exporter une source XML sous un autre format, par exemple HTML1920
1 2 = =3 = = =4567 =8 9
10 =11 = =12 13 14 15 16 17 18192021 =22 =23 24 25262728 =29 30 31
Exemple : Fichier HTML cible souhait
Exemple : Programme XSLT permettant la transformation
=
=
XSLT et namespaces
15
1.
2.
323334 =35 =36 37
8. XSLT et namespaces
Soit le fichier XML et un programme XSLT associ. La transformation ne fonctionne pas comme prvue, car la rgle essaye de matcher , alors que le nom dvelopp est document document.fr:
.document
1 2 =3 Mon texte4
12 =3 =4 =56 =789
En XSLT 1.0, il faut matcher le nom des lments en utilisant explicitement les :namespaces
Il faut dclarer l'espace de nom dans la feuille XSLTExemple :
Il faut que les noms d'lments soient prfixsExemple :
1 2 6 7 8
9
10 11
Exemple : Le problme
Syntaxe : XSL 1.0
Exemple : Solution en XSLT 1.0
= =
=
Mon texte
=
=
Transformation identit
16
1 2 6 7 8
9
10 11
En XSLT 2.0, l'attribut permet de spcifier le par dfaut xpath-default-namespace namespaced'une XSLT et vite ainsi de prfixer tous les lments:
.
1 23 =4 =5 =67 =8 =9 =
101112
Namespace (cf. p.)
9. Transformation identit
Une transformation identit est une transformation qui dlivre en sortie le mme fichier XML qu'entre.
1 23 =
Exemple : Solution en XSLT 1.0 avec namespace cible
Syntaxe : XSLT 2.0
Exemple : Solution en XSLT 2.0 avec namespace cible
Rappel
Dfinition: Identit
Exemple
= =
=
Transformation substitution de namespace
17
4 =5 6 =7 8 =9
1011
L'avantage de la transformation identit est qu'elle peut servir de base pour des modifications partielles de document XML. Il est en effet possible de lui ajouter des rgles pour traiter spcifiquement certains lments, sans modifier les autres.
La fonction XPath doit en principe renvoyer tous les nuds d'un lment selon le standard. node()Mais il est frquent que les parseurs ne renvoient pas les attributs. D'o la ncessit de matcher
pour avoir tous les nuds.node()|@*
10. Transformation substitution de namespace
Une substitution de namespace est une transformation qui substitue un namespace par un autre.
1 2 3 =4 = 5 =6 =7 8 = =9
10 11 =12 13 =14 15 16 17 18 =19 = =20 =21 22 23 2425
Mthode
Complment : node()
Dfinition: Substitution de namespace
Exemple
=version "1.0" >
= =
= = = = = = = =
Approfondissement
18
1 2 3 =4 = 5 = 6 =7 8 9 = =
10 11 12 =13 14 =15 16 17 18 19 =20 =21 =22 23 24 2526
La fonction XPath renvoie le nom d'un lment priv de son .local-name() namespace
11. Approfondissement
http://www.w3.org/TR/xslt
http://www.w3.org/TR/xpath/
[cf. W3C Xpath][cf. W3C XSL-XSLT]
http://www.mulberrytech.com/quickref/XSLT_1quickref-v2.pdf
XML prcis & concis **
, chapitre 8.XML et les bases de donnes **
Exemple : Version avec XSLT 2.0 et prfixe de namespace par dfaut
Complment : local-name()
Complment : Standards
Complment : Cours dtaills
Complment : Rfrences rapides
Complment : Ouvrage dtaill
= = = = = = =
http://www.w3.org/TR/xslthttp://www.w3.org/TR/xpath/http://www.mulberrytech.com/quickref/XSLT_1quickref-v2.pdf
Approfondissement
19
http://www.zvon.org/xxl/XSLTutorial/Output_fre/contents.html
Complment : Tutoriel
http://www.zvon.org/xxl/XSLTutorial/Output_fre/contents.html
Exercices
20
ExercicesIII
Exercice: CV
21
1. Exercices XSLT1.1. Exercice: CV
Un schma de CV
Soit le schma XML suivant (formalisme DTD):
1 2 3 4 5 6 7
Question 1
Question 2
crire un document XML valide par rapport ce schma avec au moins un lment age et deux rubriques.
Indice :
1 2 ...3 ...4 5 ...6 7 8 ...9
10
[ ]solution n1 *[ ] p.33
crire un document HTML cible d'une transformation XSLT de ce document.
Les nom, prnom et age seront en italique, les titres de rubriques seront en gras.
Indice :
1 2 3 ...4 5 6
...
7
...
8
...
9
...
10
...
11 ...12 13
[ ]solution n2 *[ ] p.33
............
...
...
...
...
...
...
...
Exercice: Pome
22
Question 3
1.2. Exercice: PomeSoit l'extrait de pome suivantcrit en XML :
1 2 3 Troll sat alone on his seat of stone,4 And munched and mumbled a bare old bone;5 For many a year he had gnawed it near,6 For meat was hard to come by.7 Done by! Gum by!8 In a cave in the hills he dwelt alone,9 And meat was hard to come by.
10 11 12 Up came Tom with his big boots on.13 Said he to Troll: 'Pray, what is yon?14 For it looks like the shin o' my nuncle Tim.15 As should be a-lyin' in the graveyard.16 Caveyard! Paveyard!17 This many a year has Tim been gone,18 And I thought he were lyin' in the graveyard.19 20
crire le programme de transformation XSLT d'un fichier XML en fichier HTML.
Indice :
1 2 3 4 5 6 CV de
Exercice: Glossaire II
23
Question
crire un programme XSL-XSLT permettant de le transformer selon le format HTML suivant:
1 2 3 The Stone Troll (JRR Tolkien)4 5 6
Troll sat alone on his seat of stone,
7
And munched and mumbled a bare old bone;
8
For many a year he had gnawed it near,
9
For meat was hard to come by.
10
Done by! Gum by!
11
In a cave in the hills he dwelt alone,
12
And meat was hard to come by.
13 14
Up came Tom with his big boots on.
15
Said he to Troll: 'Pray, what is yon?
16
For it looks like the shin o' my nuncle Tim.
17
As should be a-lyin' in the graveyard.
18
Caveyard! Paveyard!
19
This many a year has Tim been gone,
20
And I thought he were lyin' in the graveyard.
21 22
Indices :
1 2 3 4 5 6 ...7 8 9
10 11 12 13 14 15 ...16 17 18 ......19 20 ...21
Pour grer l'absence de sur la dernire strophe, ajouter une rgle qui slectionne .strophe[last()]
The Stone Troll (JRR Tolkien)
Troll sat alone on his seat of stone,
And munched and mumbled a bare old bone;
For many a year he had gnawed it near,
For meat was hard to come by.
Done by! Gum by!
In a cave in the hills he dwelt alone,
And meat was hard to come by.
Up came Tom with his big boots on.
Said he to Troll: 'Pray, what is yon?
For it looks like the shin o' my nuncle Tim.
As should be a-lyin' in the graveyard.
Caveyard! Paveyard!
This many a year has Tim been gone,
And I thought he were lyin' in the graveyard.
...
...
......
...
Exercice: Glossaire II
24
1.3. Exercice: Glossaire IISoit le schma RelaxNG suivant permettant de reprsenter un glossaire.
1 2 5 6 7 8 9
10 11 12 13 14 15 16 17 18 19 20 21 22 23 24
Question 1
Question 2
Question 3
Expliquer ce qu'exprime les et . Prciser le format que doit respecter un datatypes ID REFIDattribut ou un lment de type .ID
Instancier un document de type , sur une thmatique au choix.glossaire[ ]solution n4 *[ ] p.34
Raliser un programme XSLT permettant de publier les documents de type en HTML.glossaire
Indice :
Utiliser les ancres en HTML pour grer les "voir aussi" (on se limitera pour le moment utiliser l'id comme texte de l'ancre).
Exercice: Namespaces et FO
25
Question 4
Question 5
1.4. Exercice: Namespaces et FOSoit le fichier XSLT suivant, permettant de transformer un fichier XML en fichier Formatting
(standard W3C pour la publication de fichiers imprimables).Objects
1 2 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22
Ajouter un sommaire au dbut du fichier HTML, permettant de pointer chaque dfinition.
Proposer deux implmentations une avec et une avec xsl:template mode="..." xsl:for-.each
Trier les dfinitions par ordre alphabtique.
Indice :
Pour trier les termes par ordre alphabtique utiliser .xsl:sort
1 2 3 ...
1 2 3
Pour les "voir aussi", afficher le terme de la dfinition plutt que l'id.
Indice :
Utiliser la fonction XPath .current()
...
Exercice: Bulletins mto
26
--
23 24 25 26 27 28 29 30
Question 1
Question 2
1.5. Exercice: Bulletins mtoSoit le fichier suivant (trs proche de la syntaxe SMIL):f1.smi
1 2 3 4 5 6 le de France7 8 9 8 janvier 2010
10 11 12 5 cm de neige en moyenne sur la rgion13 14 15 Jusqu' 10cm de neige sur le sud de la rgion16 17 18 19
Pour rappel:
dcrit une squence de parties , contenant du contenu affich pendant une dure .seq par durles d'une sont prsentes en mme temps l'cran (pour simplifier dans notre cas, les par sequnes en dessous des autres)
Question 1
Indiquer quels sont les et prfixes dfinis dans ce fichier XSLT, expliquer quoi ils namespacesservent en gnral et dans ce cas prcis, et en particulier pourquoi l'on ne pourrait pas s'en passer ici.
[ ]solution n5 *[ ] p.34
Inventer un fichier XML source cohrent avec la transformation XSLT propose, et produire le fichier FO correspondant au rsultat de la transformation.
[ ]solution n6 *[ ] p.35
Ce fichier est-il un fichier XML bien form (justifier)?[ ]solution n7 *[ ] p.35
le de France8 janvier 20105 cm de neige en moyenne sur la rgionJusqu' 10cm de neige sur le sud de la rgion
Exercice: Bulletins mto
27
Question 2
Question 3
Question 4
Question 5
Soit les deux fichiers XML suivants, structurs selon une smantique mtier:
1 2 3 Picardie4 8 janvier 20105 Pluie et brouillard sur toute la rgion6 7 -5
Soit la DTD suivante :smilSuperLight.dtd
1 2 5 6 7 8 9
10 dur CDATA #REQUIRED>
Le fichier est-il valide par rapport cette DTD (justifier)?f1.smi
[ ]solution n8 *[ ] p.36
Si est un sous-ensemble du schma SMIL officiel du W3C, le fichier XML smilSuperLight.dtd est-il valide par rapport la DTD SMIL du W3C (expliquer)?f1.smi
[ ]solution n9 *[ ] p.36
Pourquoi le fichier n'est-il pas valide par rapport la DTD ?f2.smi smilSuperLight.dtd
1 2 3 4 5 6 Champagne7 8 janvier 20108 9
10 Brouillard dominant et claircies en fin de matine11 12 13 14
[ ]solution n10 *[ ] p.36
Modifier afin que soit prsent valide par rapport une nouvelle smilSuperLight.dtd f2.smiDTD smilSuperLight2.dtd
[ ]solution n11 *[ ] p.36
Picardie8 janvier 2010Pluie et brouillard sur toute la rgion-5
Champagne8 janvier 2010Brouillard dominant et claircies en fin de matine
Quiz XSLT et XPath
28
8 -39
10
1 2 3 Nord4 8 janvier 20105 Brouillard et neige sur le nord de la rgion6 Vents violents sur le bord de mer7 Verglas sur toute la rgion8
Question 6
Question 7
Proposer un schma XML selon le formalisme des DTD de telle faon que ces meteo.dtd deuxfichiers soient valides par rapport ce schma.
[ ]solution n12 *[ ] p.36
-
-
Proposer un programme XSLT permettant de transformer les fichiers de type en meteo, en affichant squentiellement:smilSuperLight2
la rgion avec la date dans une mme premire partie (1 seconde chacune, donc 2 secondes en tout),puis chaque phnomne (les tempratures ne sont pas affiches) pendant 3 secondes chaque.
Indices :
Cela correspond l'exemple de .f2.smi
Il y a une difficult particulire en XSLT regrouper rgion et date dans une mme partie, si vous ne parvenez pas rsoudre cette difficult, faite l'exercice . Cela revient sans les regroupezdans ce cas faire une transformation en , l'image de .smilSuperLight f1.smi
[ ]solution n13 *[ ] p.37
-3
Nord8 janvier 2010Brouillard et neige sur le nord de la rgionVents violents sur le bord de merVerglas sur toute la rgion
Exercice
29
2. Quiz XSLT et XPath2.1. Exercice
1. 2. 3. 4.
1.
2.
3.
4.
Soit le fichier XML ci-aprs.
Le nud courant est un des lments , crivez 4 expressions XPath diffrentes permettant de termerenvoyer le titre du document:
Sachant que est unique dans tout le document.titreSachant que est le fils de l'lment racine .titre papierSachant que est le fils du pre du pre du nud courant.titreSachant que est avant le nud courant dans l'ordre du document.titre
1 2 =3 Rinterroger les structures documentaires4 De la numrisation l'informatisation5 Stphane Crozat6 Bruno Bachimont7 Nous proposons dans cet article d'aborder ...8 In this paper we define...9
10 Ingnierie des connaissances11 XML12 Document13 14 15 Knowledge engineering16 XML17 Document18 19 =20 = =21 =22
//
/
..
preceding
[ ]solution n14 *[ ] p.38
=
Rinterroger les structures documentaires De la numrisation l'informatisation Stphane Crozat Bruno Bachimont Nous proposons dans cet article d'aborder ... In this paper we define... Ingnierie des connaissances XML Document Knowledge engineering XML Document = = = =
Exercice
30
2.2. Exercicecrire le programme XSLT permettant de transformer le fichier en .file.xml result.xhtml
1 2 3 Lorem ipsum dolor sit amet.4 Consectetur adipiscing elit.5 Nunc eu lectus in diam.6
1 2 3 4
Lorem ipsum dolor sit amet.
5
Consectetur adipiscing elit.
6
Nunc eu lectus in diam.
7 8
< >
< >
< >
< >< >
[ ]solution n15 *[ ] p.39
Lorem ipsum dolor sit amet.Consectetur adipiscing elit.Nunc eu lectus in diam.
Lorem ipsum dolor sit amet.
Consectetur adipiscing elit.
Nunc eu lectus in diam.
Exercice
31
2.3. ExerciceSoit le fichier XML ci-aprs.
1 2 =3 Rinterroger les structures documentaires4 De la numrisation l'informatisation5 Stphane Crozat6 Bruno Bachimont7 Nous proposons dans cet article d'aborder ...8 In this paper we define...9
10 Ingnierie des connaissances11 XML12 Document13 14 15 Knowledge engineering16 XML17 Document18 19 =20 = =21 =22
Complter le fichier XSLT afin de gnrer, pour chaque lment , une instruction transf.xsl termeSQL d'insertion dans une table relationnelle de schma : (o tMotsCles (terme, titre, url)
est le terme slectionn, est le titre du document et est l'adresse de la ressource terme titre urlassocie).
Pour rappel, la syntaxe d'insertion de donnes dans une table relationnelle en SQL: INSERT INTO () VALUES
.()
(terme, titre, url) (
'',
'',
''
);
[ ]solution n16 *[ ] p.40
=
Rinterroger les structures documentaires De la numrisation l'informatisation Stphane Crozat Bruno Bachimont Nous proposons dans cet article d'aborder ... In this paper we define... Ingnierie des connaissances XML Document Knowledge engineering XML Document = = = =
Exercice
32
Solutions des exercices
33Stphane Crozat
Exercice p. 22> Solution n3
Exercice p. 21> Solution n2
Exercice p. 21> Solution n1
1 2 Brassens3 Georges4 335 6 Comptences7 Chanteur, auteur, compositeur, guitariste8 9
10 Langues trangres11 Espagnol, lu, parl, chant12 13
1 2 3 CV de Georges Brassens4 5 6
Georges
7
Brassens
8
33 ans
9
Comptences
10
Chanteur, auteur, compositeur, guitariste
11
Langues trangres
12
Espagnol, lu, parl, chant
13 14
1 2
Solutions des exercices
BrassensGeorges33ComptencesChanteur, auteur, compositeur, guitaristeLangues trangresEspagnol, lu, parl, chant
CV de Georges Brassens
Georges
Brassens
33 ans
Comptences
Chanteur, auteur, compositeur, guitariste
Langues trangres
Espagnol, lu, parl, chant
Solutions des exercices
34Stphane Crozat
Exercice p. 24> Solution n4
3 4 5 6 7 CV de 8 9
10 11 12 13 14 15 16
17 18 19 20
21 22 23 24
ans
25 26 27 28 29 30 31 32
33 34 35 36
37 38 39
1 2 3 4 XML5 Mta-langage...6 7 8 SGML9 Mta-langage...
10 11 12
Exemple
CV de
ans
XMLMta-langage...SGMLMta-langage...
Solutions des exercices
35Stphane Crozat
Exercice p. 26> Solution n6
--
--
Exercice p. 26> Solution n5
Les deux sont:namespaces
http://www.w3.org/1999/XSL/Transformhttp://www.w3.org/1999/XSL/Format
Les prfixes correspondant sont respectivement:
xslfo
Les permettent d'assurer l'unicit des noms des lments XML lorsque plusieurs namespacesschmas sont utiliss. Dans ce cas, ils servent diffrencier les balises du schma de transformation XSLT et les balises du schma de publication cible . Sans cette mcanique, si les Formatting Objectsschmas de XSLT et de FO dfinissaient deux lments diffrents, mais avec le mme nom, le processeur XSLT ne saurait pas les diffrencier et engendrerait des erreurs.
1 2 3 Lorem ipsum dolor sit amet.4 Consectetur adipiscing elit.5 Nunc eu lectus in diam.6
1 2 3 4 5 6 7 8 9
10 11 12 13 14 Lorem ipsum dolor sit amet.15 Consectetur adipiscing elit.16 Nunc eu lectus in diam.17 18 19
Lorem ipsum dolor sit amet.Consectetur adipiscing elit.Nunc eu lectus in diam.
Lorem ipsum dolor sit amet.Consectetur adipiscing elit.Nunc eu lectus in diam.
Solutions des exercices
36Stphane Crozat
Exercice p. 27> Solution n11
Exercice p. 27> Solution n10
Exercice p. 27> Solution n9
------
Exercice p. 27> Solution n8
--
Exercice p. 26> Solution n7
Oui car:
Il y a un lment racine qui contient tous les autresChaque lment contient totalement ses fils (toutes les balises sont fermes et il n'y a pas de croisement de balises).
On vrifie par ailleurs qu'il n'y a pas de problme de syntaxe (attributs, caractres utiliss pour les noms des balises, etc.).
Le fichier est valide par rapport la DTD:
L'lment racine est bien smil contient un (qui est obligatoire) et pas de (qui est optionnel)smil body head
Le contient bien une obligatoire et uniquebody seqla contient quatre (elle devait en contenir au moins un)seq parChaque contient bien un unique (obligatoire) avec un attribut (obligatoire)par text durLes contiennent uniquement des caractres (#PCDATA).text
Si est un sous-ensemble du schma SMIL officiel cela signifie que le schma smilSuperLight.dtdSMIL permet d'lments que , mais que ces lments sont .plus smilSuperLight.dtd optionnels
Donc tous les documents XML valides par rapport seront valides par smilSuperLight.dtdrapport au schma officiel, puisqu'ils en respecteront les rgles.
Parce qu'il y a lments dans le premier , qui n'en autorise qu'un et un seul.deux text par
Il suffit de modifier la ligne dfinissant en ajoutant un aprs , pour exprimer le fait qu'il par + textpeut y en avoir un plusieurs.
1
Solutions des exercices
37Stphane Crozat
Exercice p. 28> Solution n13
Exercice p. 28> Solution n12
1 2 3 4 5 6 7
1 2 3 4 5 6 7 8 9
10 11 12 13 14 15 16 17 18 19 xsl:value-of select="."/>20 21 22 23 24 25 26 27 28
1 2 3 4 5 6
Solution simplifie smilSuperLight
Solution complte smilSuperLight2
xsl:value-of select="."/>
Solutions des exercices
38Stphane Crozat
Exercice p. 29> Solution n14
1. 2. 3. 4.
1.
2.
3.
4.
7 8 9
10 11 12 13 14 15 16 17 18 19 20 21 22
Soit le fichier XML ci-aprs.
Le nud courant est un des lments , crivez 4 expressions XPath diffrentes permettant de termerenvoyer le titre du document:
Sachant que est unique dans tout le document.titreSachant que est le fils de l'lment racine .titre papierSachant que est le fils du pre du pre du nud courant.titreSachant que est avant le nud courant dans l'ordre du document.titre
1 2 =3 Rinterroger les structures documentaires4 De la numrisation l'informatisation5 Stphane Crozat6 Bruno Bachimont7 Nous proposons dans cet article d'aborder ...8 In this paper we define...9
10 Ingnierie des connaissances11 XML12 Document13 14 15 Knowledge engineering16 XML17 Document18 19 =20 = =21 =22
//titre
/papier/titre
../../titre
=
Rinterroger les structures documentaires De la numrisation l'informatisation Stphane Crozat Bruno Bachimont Nous proposons dans cet article d'aborder ... In this paper we define... Ingnierie des connaissances XML Document Knowledge engineering XML Document = = = =
Solutions des exercices
39Stphane Crozat
Exercice p. 30> Solution n15
4. preceding::titre
crire le programme XSLT permettant de transformer le fichier en .file.xml result.xhtml
1 2 3 Lorem ipsum dolor sit amet.4 Consectetur adipiscing elit.5 Nunc eu lectus in diam.6
1 2 3 4
Lorem ipsum dolor sit amet.
5
Consectetur adipiscing elit.
6
Nunc eu lectus in diam.
7 8
doc
< >xhtml
< >body
para
body
xhtml
para
< >p . p
para[1]
< >< >p i . i p
1 2 3 4 5 6 7 8
Lorem ipsum dolor sit amet.Consectetur adipiscing elit.Nunc eu lectus in diam.
Lorem ipsum dolor sit amet.
Consectetur adipiscing elit.
Nunc eu lectus in diam.
Solutions des exercices
40Stphane Crozat
Exercice p. 31> Solution n16
9 10 11
12 13 14
15 16
Soit le fichier XML ci-aprs.
1 2 =3 Rinterroger les structures documentaires4 De la numrisation l'informatisation5 Stphane Crozat6 Bruno Bachimont7 Nous proposons dans cet article d'aborder ...8 In this paper we define...9
10 Ingnierie des connaissances11 XML12 Document13 14 15 Knowledge engineering16 XML17 Document18 19 =20 = =21 =22
Complter le fichier XSLT afin de gnrer, pour chaque lment , une instruction transf.xsl termeSQL d'insertion dans une table relationnelle de schma : (o tMotsCles (terme, titre, url)
est le terme slectionn, est le titre du document et est l'adresse de la ressource terme titre urlassocie).
Pour rappel, la syntaxe d'insertion de donnes dans une table relationnelle en SQL: INSERT INTO () VALUES
.()
papier
./motsCles/terme
terme
=
Rinterroger les structures documentaires De la numrisation l'informatisation Stphane Crozat Bruno Bachimont Nous proposons dans cet article d'aborder ... In this paper we define... Ingnierie des connaissances XML Document Knowledge engineering XML Document = = = =
Solutions des exercices
41Stphane Crozat
(terme, titre, url) (INSERT INTO tMotsCles VALUES
'',.
'',titre
''ressource/@uriSrc
);
1 23 = =4 =5 =6 =78 =9 INSERT INTO tMotsCles (terme, titre, url) VALUES (
10 ' = ',11 ' = ',12 ' = '13 );1415
= = =
= =
=
INSERT INTO tMotsCles (terme, titre, url) VALUES (' = ',' = ',' = ');
Bibliographie
42Stphane Crozat
Alexandre Brillant, , , [ISBN 978-2212126914]XML : Cours et exercices Eyrolles 2007
Robert Eckstein, Michel Casabianca, , , .XML prcis & concis O'Reilly 2000
Kevin Williams, Michael Brundage, Patrick Dengler, Jeff Gabriel, Andy Hoskinson, Michael Kay, Thomas Maxwell, Marcello Ochoa, Johnny Papa, Mohan Vanmane, , XML et les bases de donnes
, .Eyrolles 2001
Bibliographie
Introduction XSL-XSLTUn langage pour publier les documents XMLDfinition de XSL-XSLTPrincipe de XSL-XSLT
Programmation XSL-XSLTL'arbre du document XMLIntroduction XPathSyntaxe XPathSyntaxe gnrale XSL-XSLTPrincipales instructions XSLTFonctionnement des programmes XSL-XSLTExemple: Un programme XSLT pour gnrer du HTMLXSLT et namespacesTransformation identitTransformation substitution de namespaceApprofondissement
ExercicesExercices XSLTExercice: CVExercice: PomeExercice: Glossaire IIExercice: Namespaces et FOExercice: Bulletins mto
Quiz XSLT et XPathExerciceExerciceExercice
Solutions des exercicesBibliographie