• Aucun résultat trouvé

[PDF] Tutoriel complet et détaillé avec exemples en PDF pour s’introduire à XSLT

N/A
N/A
Protected

Academic year: 2021

Partager "[PDF] Tutoriel complet et détaillé avec exemples en PDF pour s’introduire à XSLT"

Copied!
63
0
0

Texte intégral

(1)

XSLT

Extensible Stylesheet Language Transformations

Mauro Gaio

Universit´e de Pau et des Pays de l’Adour D´epartement d’Informatique

mauro.gaio@univ-pau.fr

(2)

Plan

1 Avant-propos

2 XML, format universel

Qu’est-ce que XML r´eelement ?

3 Transformer avec XSLT

Un exemple : publication de donn´ees Les formes primitives de transformation S´election et Parcours

(3)

24 octobre 2007 Mauro Gaio, UPPA Avant-propos XML, format universel Transformer avec XSLT

Avant-propos

XSLT est une technologie puissante !

XSLT permet de transformer des documents XML XSLT utilise des r`egles (templates) pour transformer `

a la fois aux fronti`eres et au cœur du dev. de logiciels actuels Son apprentissage passe par des recettes

(4)

Plan

1 Avant-propos

2 XML, format universel

Qu’est-ce que XML r´eelement ?

3 Transformer avec XSLT

Un exemple : publication de donn´ees Les formes primitives de transformation S´election et Parcours

(5)

24 octobre 2007 Mauro Gaio, UPPA

Avant-propos XML, format universel Transformer avec XSLT

XML, format universel Qu’est-ce que XML r´eelement ?

Structuration avec XML

repr´esenter des contenus ind´ependamment de l’application

combinaison de plusieurs principes simples et g´en´eraux

< ?xml version=’’1.0’’ encoding=’’utf-8’’ ?> <cinema>

<nom> Le M´eli`es</nom>

<adresse>6, Rue Bargoin.</adresse> <ville>Pau</ville>

<departement>64000</departement> <salle num=’1’ places=’200’>

<titre>Un secret</titre>

<seances><seance>21 :00</seance></seances> </salle>

</cinema>

(6)

Avant-propos XML, format universel Transformer avec XSLT

XML, format universel Qu’est-ce que XML r´eelement ?

Structuration avec XML

repr´esenter des contenus ind´ependamment de l’application combinaison de plusieurs principes simples et g´en´eraux

la structurartion avec XML permet : de d´esigner des parties d’un contenu (chaˆıne de caract`ere) avec des noms et de hi´erarchiser ces noms

une information structur´ee avec XML consiste `a consid´erer que celle-ci est un arbre

(7)

24 octobre 2007 Mauro Gaio, UPPA

Avant-propos XML, format universel Transformer avec XSLT

XML, format universel Qu’est-ce que XML r´eelement ?

Structuration avec XML

repr´esenter des contenus ind´ependamment de l’application combinaison de plusieurs principes simples et g´en´eraux

la structurartion avec XML permet : de d´esigner des parties d’un contenu (chaˆıne de caract`ere) avec des noms et de hi´erarchiser ces noms

une information structur´ee avec XML consiste `a consid´erer que celle-ci est un arbre

(8)

Avant-propos XML, format universel Transformer avec XSLT

XML, format universel Qu’est-ce que XML r´eelement ?

Structuration avec XML

la structurartion avec XML permet : de d´esigner des parties d’un contenu (chaˆıne de caract`ere) avec des noms et de hi´erarchiser ces noms

une information structur´ee avec XML consiste `a consid´erer que celle-ci est un arbre

La d´esignation est r´ealis´ee par des balises :

<cinema>,<nom>,</nom>,<adresse>,</adresse>,<ville>,</ville>, <departement>,</departement> ...et </cinema>

(9)

24 octobre 2007 Mauro Gaio, UPPA

Avant-propos XML, format universel Transformer avec XSLT

XML, format universel Qu’est-ce que XML r´eelement ?

Structuration avec XML

la structurartion avec XML permet : de d´esigner des parties d’un contenu (chaˆıne de caract`ere) avec des noms et de hi´erarchiser ces noms

une information structur´ee avec XML consiste `a consid´erer que celle-ci est un arbre

Une paire d´esigne (type) une partie du contenu : l’´el´em´ent XML La hi´erarchie entre les diff´erentes paires structure le contenu

(10)

Avant-propos XML, format universel Transformer avec XSLT

XML, format universel Qu’est-ce que XML r´eelement ?

Structuration avec XML

la structurartion avec XML permet : de d´esigner des parties d’un contenu (chaˆıne de caract`ere) avec des noms et de hi´erarchiser ces noms

une information structur´ee avec XML consiste `a consid´erer que celle-ci est un arbre

(11)

24 octobre 2007 Mauro Gaio, UPPA

Avant-propos XML, format universel Transformer avec XSLT

XML, format universel Qu’est-ce que XML r´eelement ?

Structuration avec XML

la structurartion avec XML permet : de d´esigner des parties d’un contenu (chaˆıne de caract`ere) avec des noms et de hi´erarchiser ces noms

une information structur´ee avec XML consiste `a consid´erer que celle-ci est un arbre

`

a retenir :

un ´el´ement est caract´eris´e `a la fois par son nom et par sa place dans l’arbre XML

tout traitement se fonde sur des outils permettant de choisir des ´

el´ements par : leur nom ou leur position ou par les 2 dimensions 6

(12)

Avant-propos XML, format universel Transformer avec XSLT

XML, format universel Qu’est-ce que XML r´eelement ?

Structuration avec XML

la structurartion avec XML permet : de d´esigner des parties d’un contenu (chaˆıne de caract`ere) avec des noms et de hi´erarchiser ces noms

une information structur´ee avec XML consiste `a consid´erer que celle-ci est un arbre

`

a retenir :

un ´el´ement est caract´eris´e `a la fois par son nom et par sa place dans l’arbre XML

tout traitement se fonde sur des outils permettant de choisir des ´

el´ements par :

leur nom ou leur position ou par les 2 dimensions

(13)

24 octobre 2007 Mauro Gaio, UPPA

Avant-propos XML, format universel Transformer avec XSLT

XML, format universel Qu’est-ce que XML r´eelement ?

Documents XML

la structure d’un document XML est d´efinissable et validable par un sch´ema

un document XML est enti`erement transformable dans un autre document XML.

Document Type Definition DTD XMLSchema

(14)

Avant-propos XML, format universel Transformer avec XSLT

XML, format universel Qu’est-ce que XML r´eelement ?

Documents XML

la structure d’un document XML est d´efinissable et validable par un sch´ema

un document XML est enti`erement transformable dans un autre document XML.

< !ELEMENT cinema(nom, adresse, ville, departement, (salle)+) < !ELEMENT nom(#PCDATA)>

...

< !ELEMENT salle (titre, (seances)+)> < !ATTLIST salle num CDATA #REQUIRED

place CDATA #IMPLIED> < !ELEMENT seances ((seance)+)>

(15)

24 octobre 2007 Mauro Gaio, UPPA

Avant-propos XML, format universel Transformer avec XSLT

XML, format universel Qu’est-ce que XML r´eelement ?

Documents XML

la structure d’un document XML est d´efinissable et validable par un sch´ema

un document XML est enti`erement transformable dans un autre document XML.

La mˆeme chose mais en xml-schema

d’abord les ´el´ements de type simple :

<xs :schema xmlns :xs=’’http ://www.w3.org/2001/XMLSchema’’> .../...

<xs :element name=’’nom’’ type=’’xs :string’’/>

<xs :element name=’’departement’’ type=’’xs :integer’’/> .../...

<xs :element name=’’seance’’ type=’’xs :date’’/>

(16)

Avant-propos XML, format universel Transformer avec XSLT

XML, format universel Qu’est-ce que XML r´eelement ?

Documents XML

la structure d’un document XML est d´efinissable et validable par un sch´ema

un document XML est enti`erement transformable dans un autre document XML.

ensuite les ´el´ements de type complexe : <xs :element name=’’cinema’’> <xs :complexType> <xs :sequence> <xs :element ref=’’nom’’/> .../... <xs :element ref=’’seances’’/> </xs :sequence> </xs :complexType> </xs :element>

(17)

24 octobre 2007 Mauro Gaio, UPPA

Avant-propos XML, format universel Transformer avec XSLT

XML, format universel Qu’est-ce que XML r´eelement ?

Documents XML

la structure d’un document XML est d´efinissable et validable par un sch´ema

un document XML est enti`erement transformable dans un autre document XML.

<xs :element name=’’seances’’> <xs :complexType>

<xs :sequence>

<xs :element ref=’’seance’’ maxOccurs=’’unbounded’’/> </xs :sequence>

</xs :complexType> </xs :element>

Les attrib. minOccurs et maxOccurs sont par d´efaut `a 1, donc lorsque omis : l’´el´ement doit apparaˆıtre une et une seule fois

(18)

Avant-propos XML, format universel Transformer avec XSLT

XML, format universel Qu’est-ce que XML r´eelement ?

Documents XML

la structure d’un document XML est d´efinissable et validable par un sch´ema

un document XML est enti`erement transformable dans un autre document XML.

Les sch´emas ont plusieurs avantages:

un ´editeur se sert du sch´ema pour faciliter l’´edition d’un doc. XML et/ou v´erifier sa conformit´e pour rapport `a son sch´ema

Un programme XSLT se base sur le sch´ema pour l’origine et la

destination de la transformation et/ou `a la v´erification des r`egles XSLT

En combinaison avec une analyse validante, le processeur XSLT v´erifie

avant l’´ex´ecution de la transformation si le doc. `a transformer est conforme

(19)

Plan

1 Avant-propos

2 XML, format universel

Qu’est-ce que XML r´eelement ?

3 Transformer avec XSLT

Un exemple : publication de donn´ees Les formes primitives de transformation S´election et Parcours

(20)

Avant-propos XML, format universel Transformer avec XSLT Transformer avec XSLT Un exemple : publication de donn´ees

Publication de donn´

ees

L’entˆete habituelle :

<?xml v e r s i o n =”1.0” e n c o d i n g =”UTF−8”?> < x s l : s t y l e s h e e t

x m l n s : x s l =” h t t p : / /www . w3 . o r g /1999/ XSL/ T r a n s f o r m ” v e r s i o n =”1.0”>

(21)

24 octobre 2007 Mauro Gaio, UPPA

Avant-propos XML, format universel Transformer avec XSLT Transformer avec XSLT Un exemple : publication de donn´ees

< x s l : t e m p l a t e match=”/”> <html>

<head>

< t i t l e >Le c i n´e m a < x s l : v a l u e −o f s e l e c t =”nom”/> </ t i t l e >

</head> <body> <p>

<!−− I n s ´e r e r une i m a g e GIF a v e c l e t i t r e comme nom−−> <img s r c =”{nom } . g i f ” a l i g n =” l e f t ” h e i g h t =”220”/> <h1> < x s l : v a l u e −o f s e l e c t =”nom”/> </h1> < x s l : v a l u e −o f s e l e c t =” a d r e s s e ”/ > , <b r /> <i > < x s l : v a l u e −o f s e l e c t =”d e p a r t e m e n t ”/></ i >, < x s l : v a l u e −o f s e l e c t =” v i l l e ”/> </p> 10

(22)

Avant-propos XML, format universel Transformer avec XSLT Transformer avec XSLT Un exemple : publication de donn´ees

< x s l : a p p l y −t e m p l a t e s s e l e c t =” s a l l e ”/> </body> </html> </ x s l : t e m p l a t e > < x s l : t e m p l a t e match=” s a l l e ”> <!−− E x t r a c t i o n d ’ a t t r i b u t : no de s a l l e e t p l a c e s −−> <h2>S a l l e No < x s l : v a l u e −o f s e l e c t =”@num”/ > , < x s l : v a l u e −o f s e l e c t =” @ p l a c e s ”/> p l a c e s </h2> <!−− B o u c l e s s u r t o u t e s l e s s ´e a n c e s −−> <h3>S´e a n c e s </h3><o l > < x s l : f o r −e a c h s e l e c t =” s e a n c e s / s e a n c e ”> < l i >< x s l : v a l u e −o f s e l e c t =”.”/></ l i > </ x s l : f o r −each ></o l > </ x s l : t e m p l a t e > </ x s l : s t y l e s h e e t >

(23)

24 octobre 2007 Mauro Gaio, UPPA

Avant-propos XML, format universel Transformer avec XSLT Transformer avec XSLT Les formes primitives de transformation

Transformer des chaˆıne de caract`

eres

La manipulation des chaˆınes de catact`eres : la forme de transformation la plus primitive

Pour des manipulations complexes les programmeurs ont 2 choix : 1 faire appel `a des fonctions ´ecrites dans un autre langage (Java ;-) )

lorsque la portabilit´e n’est pas critique 2 ´ecrire des fonctions avanc´ees en XSLT

(24)

Avant-propos XML, format universel Transformer avec XSLT Transformer avec XSLT Les formes primitives de transformation

Transformer des chaˆıne de caract`

eres

La manipulation des chaˆınes de catact`eres : la forme de transformation la plus primitive

Pour des manipulations complexes les programmeurs ont 2 choix : 1 faire appel `a des fonctions ´ecrites dans un autre langage (Java ;-) )

lorsque la portabilit´e n’est pas critique 2 ´ecrire des fonctions avanc´ees en XSLT

XSLT ne dispose pas de l’artillerie lourde offerte par Perl XSLT offre principalement 9 fonctions de base

(25)

24 octobre 2007 Mauro Gaio, UPPA

Avant-propos XML, format universel Transformer avec XSLT Transformer avec XSLT Les formes primitives de transformation

Supprimer/remplacer certains caract`

eres d’une

chaˆıne

string translate (string chaine, string arg 1, string arg 2)

Exemple : supprimer tous les caract`eres num´erique qui apparaissent dans une chaˆıne donn´ee.

< x s l : param name = ’ ’ c h a i n e ’ ’ > < x s l : t e m p l a t e name = ’ ’ s u p p r i m e ’ ’ >

< x s l : v a l u e −o f s e l e c t =

’ ’ t r a n s l a t e ( $ c h a i n e , ’ 0 1 2 3 4 5 6 7 8 9 ’ , ’ ’ ) ’ ’ / > </ x s l : t e m p l a t e >

la valeur du param`etre $chaine peut ˆetre obtenue via la m´ethode GET du protocole HTTP) :

http ://www.bidouille.net/transforme.xsl ?chaine=12 avril 2012 12 :30 13

(26)

24 octobre 2007 Mauro Gaio, UPPA

Avant-propos XML, format universel Transformer avec XSLT Transformer avec XSLT Les formes primitives de transformation

les fonctions de bases

string concat (string chaine1, string chaine2, string chaines∗ ) < !--concatenation d’au moins 2 cha^ınes-->

chaine contient la sous − chaine-->

string normalize − space(string chaine?) < !--supprimer tous les espaces d´ebut, fin et remplacer `a 1 les cons´ecutifs--> Boolean starts − with (string chaine, string sous − chaine) < !--si cha^ıne d´ebute avec sous-cha^ıne-->

number string − length(string chaine?) < !--longueur--> string substring (string chaine, number debut, number longueur ?) < !--extraire une sous-cha^ıne `a partir de debut et de la taille de longueur -->

string substring − before (string chaine, string sous − chaine) < !--la cha^ıne avant la premi`ere occurence de sous − chaine-->

(27)

24 octobre 2007 Mauro Gaio, UPPA

Avant-propos XML, format universel Transformer avec XSLT Transformer avec XSLT Les formes primitives de transformation

les fonctions de bases

string concat (string chaine1, string chaine2, string chaines∗ ) < !--concatenation d’au moins 2 cha^ınes-->

Boolean contains (string chaine, string sous − chaine)< !--test si chaine contient la sous − chaine-->

string normalize − space(string chaine?) < !--supprimer tous les espaces d´ebut, fin et remplacer `a 1 les cons´ecutifs--> Boolean starts − with (string chaine, string sous − chaine) < !--si cha^ıne d´ebute avec sous-cha^ıne-->

number string − length(string chaine?) < !--longueur--> string substring (string chaine, number debut, number longueur ?) < !--extraire une sous-cha^ıne `a partir de debut et de la taille de longueur -->

string substring − before (string chaine, string sous − chaine) < !--la cha^ıne avant la premi`ere occurence de sous − chaine-->

(28)

24 octobre 2007 Mauro Gaio, UPPA

Avant-propos XML, format universel Transformer avec XSLT Transformer avec XSLT Les formes primitives de transformation

les fonctions de bases

string concat (string chaine1, string chaine2, string chaines∗ ) < !--concatenation d’au moins 2 cha^ınes-->

Boolean contains (string chaine, string sous − chaine)< !--test si chaine contient la sous − chaine-->

string normalize − space(string chaine?) < !--supprimer tous les espaces d´ebut, fin et remplacer `a 1 les cons´ecutifs-->

cha^ıne d´ebute avec sous-cha^ıne-->

number string − length(string chaine?) < !--longueur--> string substring (string chaine, number debut, number longueur ?) < !--extraire une sous-cha^ıne `a partir de debut et de la taille de longueur -->

string substring − before (string chaine, string sous − chaine) < !--la cha^ıne avant la premi`ere occurence de sous − chaine-->

(29)

24 octobre 2007 Mauro Gaio, UPPA

Avant-propos XML, format universel Transformer avec XSLT Transformer avec XSLT Les formes primitives de transformation

les fonctions de bases

string concat (string chaine1, string chaine2, string chaines∗ ) < !--concatenation d’au moins 2 cha^ınes-->

Boolean contains (string chaine, string sous − chaine)< !--test si chaine contient la sous − chaine-->

string normalize − space(string chaine?) < !--supprimer tous les espaces d´ebut, fin et remplacer `a 1 les cons´ecutifs--> Boolean starts − with (string chaine, string sous − chaine) < !--si cha^ıne d´ebute avec sous-cha^ıne-->

number string − length(string chaine?) < !--longueur--> string substring (string chaine, number debut, number longueur ?) < !--extraire une sous-cha^ıne `a partir de debut et de la taille de longueur -->

string substring − before (string chaine, string sous − chaine) < !--la cha^ıne avant la premi`ere occurence de sous − chaine-->

(30)

24 octobre 2007 Mauro Gaio, UPPA

Avant-propos XML, format universel Transformer avec XSLT Transformer avec XSLT Les formes primitives de transformation

les fonctions de bases

string concat (string chaine1, string chaine2, string chaines∗ ) < !--concatenation d’au moins 2 cha^ınes-->

Boolean contains (string chaine, string sous − chaine)< !--test si chaine contient la sous − chaine-->

string normalize − space(string chaine?) < !--supprimer tous les espaces d´ebut, fin et remplacer `a 1 les cons´ecutifs--> Boolean starts − with (string chaine, string sous − chaine) < !--si cha^ıne d´ebute avec sous-cha^ıne-->

number string − length(string chaine?) < !--longueur-->

< !--extraire une sous-cha^ıne `a partir de debut et de la taille de longueur -->

string substring − before (string chaine, string sous − chaine) < !--la cha^ıne avant la premi`ere occurence de sous − chaine-->

(31)

24 octobre 2007 Mauro Gaio, UPPA

Avant-propos XML, format universel Transformer avec XSLT Transformer avec XSLT Les formes primitives de transformation

les fonctions de bases

string concat (string chaine1, string chaine2, string chaines∗ ) < !--concatenation d’au moins 2 cha^ınes-->

Boolean contains (string chaine, string sous − chaine)< !--test si chaine contient la sous − chaine-->

string normalize − space(string chaine?) < !--supprimer tous les espaces d´ebut, fin et remplacer `a 1 les cons´ecutifs--> Boolean starts − with (string chaine, string sous − chaine) < !--si cha^ıne d´ebute avec sous-cha^ıne-->

number string − length(string chaine?) < !--longueur--> string substring (string chaine, number debut, number longueur ?) < !--extraire une sous-cha^ıne `a partir de debut et de la taille de longueur -->

string substring − before (string chaine, string sous − chaine) < !--la cha^ıne avant la premi`ere occurence de sous − chaine-->

(32)

Avant-propos XML, format universel Transformer avec XSLT Transformer avec XSLT Les formes primitives de transformation

les fonctions de bases

string concat (string chaine1, string chaine2, string chaines∗ ) < !--concatenation d’au moins 2 cha^ınes-->

Boolean contains (string chaine, string sous − chaine)< !--test si chaine contient la sous − chaine-->

string normalize − space(string chaine?) < !--supprimer tous les espaces d´ebut, fin et remplacer `a 1 les cons´ecutifs--> Boolean starts − with (string chaine, string sous − chaine) < !--si cha^ıne d´ebute avec sous-cha^ıne-->

number string − length(string chaine?) < !--longueur--> string substring (string chaine, number debut, number longueur ?) < !--extraire une sous-cha^ıne `a partir de debut et de la taille de longueur -->

string substring − before (string chaine, string sous − chaine) < !--la cha^ıne avant la premi`ere occurence de sous − chaine-->

(33)

24 octobre 2007 Mauro Gaio, UPPA

Avant-propos XML, format universel Transformer avec XSLT Transformer avec XSLT Les formes primitives de transformation

Nombres, op. math. et date / heure

Seules le op´erations arithm´etiques de base sont disponibles :compter, aditionner et formater des nombres

Ex : Calcul de la valeur absolue math : abs(x ) < x s l : t e m p l a t e name=”math : a b s”> < x s l : param name=”x”/> < x s l : c h o o s e > < x s l : when t e s t =”$x & l t ; 0”> < x s l : v a l u e −o f s e l e c t =”$x∗−1”/> </ x s l : when> < x s l : o t h e r w i s e > < x s l : v a l u e −o f s e l e c t =”$x”/> </ x s l : o t h e r w i s e > </ x s l : c h o o s e > </ x s l : t e m p l a t e > </ x s l : s t y l e s h e e t > 15

(34)

24 octobre 2007 Mauro Gaio, UPPA

Avant-propos XML, format universel Transformer avec XSLT Transformer avec XSLT Les formes primitives de transformation

Nombres, op. math. et date / heure

La page Web : http ://www.incrementaldevelopment.com/xsltrick/

contient quelques curiosit´es math´ematiques ´ecrites en XSLT.

XSLT 1.0 ne sait pas quelle heure il est. . .

sachant que EXSLT.org est une communaut´e qui propose des

extensions de XSLT 1.0 dans diff´erents domaines et notamment :dans les fonctions math. y compris des op´erateurs ensemblistes, les dates et les heures, les expressions r´eguli`eres . . .

(35)

24 octobre 2007 Mauro Gaio, UPPA

Avant-propos XML, format universel Transformer avec XSLT Transformer avec XSLT Les formes primitives de transformation

Nombres, op. math. et date / heure

La page Web : http ://www.incrementaldevelopment.com/xsltrick/

contient quelques curiosit´es math´ematiques ´ecrites en XSLT. XSLT 1.0 ne sait pas quelle heure il est. . .

l’obtention de la date et de l’heure courants ne peut ˆetre impl´ement´ee.

Ou alors en passant par :http ://www.exslt.org/date/index.html

sachant que EXSLT.org est une communaut´e qui propose des

extensions de XSLT 1.0 dans diff´erents domaines et notamment :dans les fonctions math. y compris des op´erateurs ensemblistes, les dates et les heures, les expressions r´eguli`eres . . .

nombreuses de ces extensions sont reprises dans XSLT 2.0`a confirmer

(36)

24 octobre 2007 Mauro Gaio, UPPA

Avant-propos XML, format universel Transformer avec XSLT Transformer avec XSLT Les formes primitives de transformation

Nombres, op. math. et date / heure

La page Web : http ://www.incrementaldevelopment.com/xsltrick/

contient quelques curiosit´es math´ematiques ´ecrites en XSLT. XSLT 1.0 ne sait pas quelle heure il est. . .

Ou alors en passant par : http ://www.exslt.org/date/index.html

sachant que EXSLT.org est une communaut´e qui propose des

extensions de XSLT 1.0 dans diff´erents domaines et notamment :dans les fonctions math. y compris des op´erateurs ensemblistes, les dates et les heures, les expressions r´eguli`eres . . .

(37)

24 octobre 2007 Mauro Gaio, UPPA

Avant-propos XML, format universel Transformer avec XSLT Transformer avec XSLT Les formes primitives de transformation

Nombres, op. math. et date / heure

La page Web : http ://www.incrementaldevelopment.com/xsltrick/

contient quelques curiosit´es math´ematiques ´ecrites en XSLT. XSLT 1.0 ne sait pas quelle heure il est. . .

Ou alors en passant par : http ://www.exslt.org/date/index.html

sachant que EXSLT.org est une communaut´e qui propose des

extensions de XSLT 1.0 dans diff´erents domaines et notamment :dans les fonctions math. y compris des op´erateurs ensemblistes, les dates et les heures, les expressions r´eguli`eres . . .

nombreuses de ces extensions sont reprises dans XSLT 2.0 `a confirmer

(38)

24 octobre 2007 Mauro Gaio, UPPA

Avant-propos XML, format universel Transformer avec XSLT

Transformer avec XSLT S´election et Parcours

election et Parcours

Un traitement en XSLT implique 2 op´erations :

1 d´eterminer les ´elements `a consulter (s´election) 2 connaˆıtre l’ordre dans lequel le faire (parcours)

fortement li´ees `a XSLT

Le parcours d´epend des structures de contrˆoles int´egr´ees dans XSLT et la fa¸con dont les r`egles sont organnis´ees `a partir de ces structures

(39)

24 octobre 2007 Mauro Gaio, UPPA

Avant-propos XML, format universel Transformer avec XSLT

Transformer avec XSLT S´election et Parcours

election et Parcours

Un traitement en XSLT implique 2 op´erations :

1 d´eterminer les ´elements `a consulter (s´election) 2 connaˆıtre l’ordre dans lequel le faire (parcours)

La s´election est du ressort de XPath, une sp´ec. distincte mais fortement li´ees `a XSLT

Le parcours d´epend des structures de contrˆoles int´egr´ees dans XSLT et la fa¸con dont les r`egles sont organnis´ees `a partir de ces structures

(40)

24 octobre 2007 Mauro Gaio, UPPA

Avant-propos XML, format universel Transformer avec XSLT

Transformer avec XSLT S´election et Parcours

election et Parcours

Un traitement en XSLT implique 2 op´erations :

1 d´eterminer les ´elements `a consulter (s´election) 2 connaˆıtre l’ordre dans lequel le faire (parcours)

fortement li´ees `a XSLT

Le parcours d´epend des structures de contrˆoles int´egr´ees dans XSLT et la fa¸con dont les r`egles sont organnis´ees `a partir de ces structures

(41)

24 octobre 2007 Mauro Gaio, UPPA

Avant-propos XML, format universel Transformer avec XSLT

Transformer avec XSLT S´election et Parcours

Le langage XPath

Dans XPath le r´ef´erencement de nœuds s’effectue en d´ecrivant des parcours dans l’arbre par exemple dans les instructions XSLT suivantes :

1 <xsl :apply-templates select=’’cinema/salle’’/>

s´election de tous les nœuds de type ”salle” fils d’un nœud de type ”cinema” lui-mˆeme fils d’un nœud contexte.

2 <xsl :apply-templates match=’’cinema/salle’’/>

d´esignation des nœuds auxquels s’applique une r`egle

3 <xsl :value-of select=’’salle/@num’’>

extraction de valeurs

(42)

24 octobre 2007 Mauro Gaio, UPPA

Avant-propos XML, format universel Transformer avec XSLT

Transformer avec XSLT S´election et Parcours

Le langage XPath

Dans XPath le r´ef´erencement de nœuds s’effectue en d´ecrivant des parcours dans l’arbre par exemple dans les instructions XSLT suivantes :

1 <xsl :apply-templates select=’’cinema/salle’’/>

s´election de tous les nœuds de type ”salle” fils d’un nœud de type ”cinema” lui-mˆeme fils d’un nœud contexte.

2 <xsl :apply-templates match=’’cinema/salle’’/>

d´esignation des nœuds auxquels s’applique une r`egle

(43)

24 octobre 2007 Mauro Gaio, UPPA

Avant-propos XML, format universel Transformer avec XSLT

Transformer avec XSLT S´election et Parcours

Le langage XPath

Dans XPath le r´ef´erencement de nœuds s’effectue en d´ecrivant des parcours dans l’arbre par exemple dans les instructions XSLT suivantes :

1 <xsl :apply-templates select=’’cinema/salle’’/>

s´election de tous les nœuds de type ”salle” fils d’un nœud de type ”cinema” lui-mˆeme fils d’un nœud contexte.

2 <xsl :apply-templates match=’’cinema/salle’’/>

d´esignation des nœuds auxquels s’applique une r`egle

3 <xsl :value-of select=’’salle/@num’’>

extraction de valeurs

(44)

Avant-propos XML, format universel Transformer avec XSLT

Transformer avec XSLT S´election et Parcours

Le langage XPath

En synth`ese :

Une expression XPath d´esigne un ou ++ nœuds en exprimant des chemins

dans un arbre XML. Leur ´evaluation selon le contexte donne :

soit une valeur num´erique ou alphanum´erique soit un sous-ensemble des nœuds de l’arbre.

(45)

24 octobre 2007 Mauro Gaio, UPPA

Avant-propos XML, format universel Transformer avec XSLT

Transformer avec XSLT S´election et Parcours

Le langage XPath

Une expression XPath est constitu´ee d’une suite d’´etapes, mat´erialis´ees par des ”/”

Chaque ´etape est elle-mˆeme divisible en trois composants :

l’axe sens de parcours des nœuds `a partir du nœud contexte ;

le filtre indiquant le type de nœud `a retenir dans l’´evaluation

le(s) pr´edicat(s) exprimant les propri´et´es que doivent satisfaire les nœuds retenus apr`es filtrage pour ˆetre retenus dans le r´esultat.

(46)

Avant-propos XML, format universel Transformer avec XSLT

Transformer avec XSLT S´election et Parcours

Les axes

/A/B/@att1 Document / Element B Element D Element D Element A Element B Attr att1 a1 Attr att1 a2 Element C Attr att2 a3 Attr att3 15 Element D Text texte1 Text texte1 Text texte1

(47)

24 octobre 2007 Mauro Gaio, UPPA

Avant-propos XML, format universel Transformer avec XSLT

Transformer avec XSLT S´election et Parcours

Les axes

/A/B/@att1 = /child : :A/child : :B/attribute : :att1 Document / Element B Element D Element D Element A Element B Attr att1 a1 Attr att1 a2 Element C Attr att2 a3 Attr att3 15 Element D Text texte1 Text texte1 Text texte1 20

(48)

Avant-propos XML, format universel Transformer avec XSLT

Transformer avec XSLT S´election et Parcours

Les axes

child, attribute, parent, descendant, ancestor . . .

Document / Element B Element D Element D Element A Element B Attr att1 a1 Attr att1 a2 Element C Attr att2 a3 Attr att3 15 Element D Text texte1 Text texte1 Text texte1

(49)

24 octobre 2007 Mauro Gaio, UPPA

Avant-propos XML, format universel Transformer avec XSLT

Transformer avec XSLT S´election et Parcours

Les filtres

Deux types de filtrage pour selectionner des nœuds :par nom et par type

Filtre avec noms d’´el´ements /A/B/D

Filtre avec nom d’attributs /descendant : :node()/@att1 Filtre par type de nœud /comment()

(50)

24 octobre 2007 Mauro Gaio, UPPA

Avant-propos XML, format universel Transformer avec XSLT

Transformer avec XSLT S´election et Parcours

Les filtres

Deux types de filtrage pour selectionner des nœuds :par nom et par type

Filtre avec nom d’attributs /descendant : :node()/@att1

Filtre par type de nœud /comment()

(51)

24 octobre 2007 Mauro Gaio, UPPA

Avant-propos XML, format universel Transformer avec XSLT

Transformer avec XSLT S´election et Parcours

Les filtres

Deux types de filtrage pour selectionner des nœuds :par nom et par type

Filtre avec noms d’´el´ements /A/B/D

Filtre avec nom d’attributs /descendant : :node()/@att1

Filtre par type de nœud /comment()

D´esigne tous les commentaires fils de la racine

(52)

24 octobre 2007 Mauro Gaio, UPPA

Avant-propos XML, format universel Transformer avec XSLT

Transformer avec XSLT S´election et Parcours

Les filtres

Deux types de filtrage pour selectionner des nœuds :par nom et par type

Filtre avec nom d’attributs /descendant : :node()/@att1

Filtre par type de nœud /comment()

Filtre Type de nœuds d´esign´es

text() Text

comment() Commentaire ”Comment”

processing-instruction() instructions d’´ex´ecution

* Element (sauf attribut)

ou Attr (avec axe attribute)

(53)

24 octobre 2007 Mauro Gaio, UPPA

Avant-propos XML, format universel Transformer avec XSLT

Transformer avec XSLT S´election et Parcours

Les filtres

Exemple d’une expression avec text()

/A/B//text() = /child : :A/child : :B/descendant-or-self : :node()/text() Document / Element B Element D Element D Element A Element B Attr att1 a1 Attr att1 a2 Element C Attr att2 a3 Attr att3 15 Element D Text texte1 Text texte1 Text texte1 22

(54)

24 octobre 2007 Mauro Gaio, UPPA

Avant-propos XML, format universel Transformer avec XSLT

Transformer avec XSLT S´election et Parcours

Les Pr´

edicats

La 3i`eme partie d’une ´etape est un pr´edicat :

autrement dit, une exp. bool´eenne constitu´ees d’un ou ++ tests, compos´es avec les connecteurs logiques and, or et la n´egation fournie sous la forme d’une fonction not()

La forme g´en´erale d’une ´etape est donc

axe : :filtre[pr´edicat1][pr´edicat2]...

(55)

24 octobre 2007 Mauro Gaio, UPPA

Avant-propos XML, format universel Transformer avec XSLT

Transformer avec XSLT S´election et Parcours

Les Pr´

edicats

La 3i`eme partie d’une ´etape est un pr´edicat :

autrement dit, une exp. bool´eenne constitu´ees d’un ou ++ tests, compos´es avec les connecteurs logiques and, or et la n´egation fournie sous la forme d’une fonction not()

La forme g´en´erale d’une ´etape est donc

axe : :filtre[pr´edicat1][pr´edicat2]...

`

a peu pr`es n’importe quelle expression XPath peut ˆetre convertie en un bool´een

Dans l’expression : /A/B[@att1]

s’il n’y a pas d’attribut de ce nom la valeur bool´eenne de ce pr´edicat est false

(56)

24 octobre 2007 Mauro Gaio, UPPA

Avant-propos XML, format universel Transformer avec XSLT

Transformer avec XSLT S´election et Parcours

Les Pr´

edicats

La 3i`eme partie d’une ´etape est un pr´edicat :

autrement dit, une exp. bool´eenne constitu´ees d’un ou ++ tests, compos´es avec les connecteurs logiques and, or et la n´egation fournie sous la forme d’une fonction not()

La forme g´en´erale d’une ´etape est donc

axe : :filtre[pr´edicat1][pr´edicat2]...

bool´een

Composition de pr´edicats /A/B[@att1=’a1’][position()=last()]

tous les ´el´ements B ayant comme attribut att1 valant a1 (premier pr´edicat) et on ne conserve que le dernier (second pr´edicat)

(57)

24 octobre 2007 Mauro Gaio, UPPA

Avant-propos XML, format universel Transformer avec XSLT

Transformer avec XSLT S´election et Parcours

Les Pr´

edicats

La 3i`eme partie d’une ´etape est un pr´edicat :

autrement dit, une exp. bool´eenne constitu´ees d’un ou ++ tests, compos´es avec les connecteurs logiques and, or et la n´egation fournie sous la forme d’une fonction not()

La forme g´en´erale d’une ´etape est donc

axe : :filtre[pr´edicat1][pr´edicat2]...

`

a peu pr`es n’importe quelle expression XPath peut ˆetre convertie en un bool´een

Composition de pr´edicats /A/B[@att1=’a1’][position()=last()]

tous les ´el´ements B ayant comme attribut att1 valant a1 (premier pr´edicat) et on ne conserve que le dernier (second pr´edicat)

L’utilisation d’une succession de [ ] d´enote une composition 6= avec l’utilisation de connecteurs logiques : l’ens. des nœuds du 1er pr´edicat est pris comme contexte du suivant.

(58)

24 octobre 2007 Mauro Gaio, UPPA

Avant-propos XML, format universel Transformer avec XSLT

Transformer avec XSLT G´en´eration de code

en´

eration de code

La plupart des derniers progr`es dans le d´eveloppement logiciel sont li´es `a la notion de g´en´eration automatique de code `a partir de sp´ecifications de plus haut niveau.

L’´ecriture d’un programme ⇒ codage de 6= types de connaissances

(59)

24 octobre 2007 Mauro Gaio, UPPA

Avant-propos XML, format universel Transformer avec XSLT

Transformer avec XSLT G´en´eration de code

en´

eration de code

La plupart des derniers progr`es dans le d´eveloppement logiciel sont li´es `a la notion de g´en´eration automatique de code `a partir de sp´ecifications de plus haut niveau.

Le langage cible n’est pas du code machine executable

L’´ecriture d’un programme ⇒ codage de 6= types de connaissances

Mais qu’est-ce que XML et XSLT ont `a voir avec cela ?

(60)

24 octobre 2007 Mauro Gaio, UPPA

Avant-propos XML, format universel Transformer avec XSLT

Transformer avec XSLT G´en´eration de code

en´

eration de code

La plupart des derniers progr`es dans le d´eveloppement logiciel sont li´es `a la notion de g´en´eration automatique de code `a partir de sp´ecifications de plus haut niveau.

Le langage cible n’est pas du code machine executable

(61)

24 octobre 2007 Mauro Gaio, UPPA

Avant-propos XML, format universel Transformer avec XSLT

Transformer avec XSLT G´en´eration de code

en´

eration de code

La plupart des derniers progr`es dans le d´eveloppement logiciel sont li´es `a la notion de g´en´eration automatique de code `a partir de sp´ecifications de plus haut niveau.

Le langage cible n’est pas du code machine executable

L’´ecriture d’un programme ⇒ codage de 6= types de connaissances

Mais qu’est-ce que XML et XSLT ont `a voir avec cela ?

(62)

24 octobre 2007 Mauro Gaio, UPPA

Avant-propos XML, format universel Transformer avec XSLT

Transformer avec XSLT G´en´eration de code

en´

eration de code

La plupart des derniers progr`es dans le d´eveloppement logiciel sont li´es `a la notion de g´en´eration automatique de code `a partir de sp´ecifications de plus haut niveau.

Le langage cible n’est pas du code machine executable

L’´ecriture d’un programme ⇒ codage de 6= types de connaissances

⇒ Sp´ecifier les connaissances de l’appli. en XML, ce qui permet : de g´en´erer le code de l’appli. dans diff´erents langages cibles,

de g´en´erer la documentation,

(63)

24 octobre 2007 Mauro Gaio, UPPA

Avant-propos XML, format universel Transformer avec XSLT

Transformer avec XSLT G´en´eration de code

en´

eration de code

La plupart des derniers progr`es dans le d´eveloppement logiciel sont li´es `a la notion de g´en´eration automatique de code `a partir de sp´ecifications de plus haut niveau.

Le langage cible n’est pas du code machine executable

L’´ecriture d’un programme ⇒ codage de 6= types de connaissances

Mais qu’est-ce que XML et XSLT ont `a voir avec cela ?

⇒ Sp´ecifier les connaissances de l’appli. en XML, ce qui permet : de g´en´erer le code de l’appli. dans diff´erents langages cibles,

de g´en´erer la documentation,

et ´eventuellement de produire des donn´ees de test. Mais bien entendu ce n’est pas gratuit

Références

Documents relatifs

E n s ec ond [ieu, il faudrait imp6rati vemen t des rdgions frangaises plus grandes et, donc, moins nom- breuses car I'attractivit6 et les capacit6s de d6vblop-

Dans un premier temps, les propriétés de dérivés de l’imidazole sont exploitées pour former un catalyseur de type palladium-NHC qui est utilisé pour catalyser la réaction de

3.20 Fluctuations de vitesse longitudinale et verticale mesurées par (a) 1’ADV et (b) le PC-ADP pour les mesures de vitesses dii 25 juillet ((1 70cms1) du faisceau 3 tIn PC-ADP à 21

Ces données sont devenues une véritable monnaie d’échange pour lutter contre la criminalité internationale et l’échange des données la principale activité du Parquet

Il en va vraisemblablement de même pour ce qui, présenté comme des « frappes ciblées » contre des terroristes, s’apparente à des exécutions extra-judiciaires

Cette collision politique avec le siècle se trouve aussi dans la scène de la Nuit de Walpurgis du Faust I goethéen, quoique quelque peu atténuée, puisque Faust

Dans cette optique, onze amusiques et leurs contrôles appariés ont jugé des extraits de musique classique gais et tristes, dans leur forme originale et dans deux

Cette question a bien sûr été longuement étudiée et il n’est pas ici nécessaire de la revoir en détail68. Cependant, un bref survol des quelques commentaires de ce dernier à