Transformations XML : XPath et XSL-XSLT · Introduction à XSL-XSLT 4---1. Un langage pour publier...

42
Transformations XML : XPath et XSL-XSLT Stéphane Crozat Ingénierie Documentaire http://doc.crzt.fr 14 septembre 2016

Transcript of Transformations XML : XPath et XSL-XSLT · Introduction à XSL-XSLT 4---1. Un langage pour publier...

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