Transformer des données XML XSLT

Hasonló dokumentumok
Induction: Circuit équivalent

Aspektus-orientált nyelvek XML reprezentációja. Kincses Róbert Debreceni Egyetem, Informatikai Intézet

Présentation du fascicule 4: Topométrie

Festival de la Francophonie Concours «dis-moi dix mots à la folie!»

XSLT XML. DEIM Forum 2013 B2-1 XML XML XML XML XSLT XSLT XSLT XML XSLT XSLT

A FRANCIA NYELVI OSZTÁLYOZÓ VIZSGA KÖVETELMÉNYEI

Tecnologias XML. Extensible Stylesheet Language

V. gyakorlat: XML alapú adatkezelés

MATEMATIKA FRANCIA NYELVEN

XSLT ( XSL Transformations)

FÖLDRAJZ FRANCIA NYELVEN

Termékismertető. Wilo-Sevio AIR,

Evaluation du site bitrix24.hu

<?xml version="1.0" encoding="shift_jis"?> <xsl:stylesheet xmlns:xsl=" version="1.0"> <xsl:output method="html"

Francia C nyelvi programkövetelmény. A javaslattevő alapadatai. A nyelvi képzésre vonatkozó adatok

FÖLDRAJZ FRANCIA NYELVEN KÖZÉPSZINTŰ ÍRÁSBELI VIZSGA JAVÍTÁSI-ÉRTÉKELÉSI ÚTMUTATÓ

GÉPI HANG ÉRTÉSE. A hanganyag írott változata:

ÍRÁSBELI ÉRETTSÉGI TÉMAKÖRÖK FRANCIA NYELVBŐL KÖZÉPSZINT

Jacques Roubaud: Versek

T 29 A. Írásbeli érettségi tétel a speciális tanterv szerint végzett vizsgázók számára francia nyelvből

Kétnyelvű általános szótár használható. A rendelkezésre álló idő 40 perc.

SZABÓ JÓZSEF Espace Gard

Probl me J1 - Le trident

XML technikák II Kovács, László

Le français, c est facile! Szókincsvadász

Méthodes Électriques: Résistivité Électrique

Les régions de la Hongrie. Budapest

Analyse de Séquences Macromoléculaires 2 (ASM2)

MATEMATIKA Francia nyelven MATHEMATIQUES

Caractérisation de promoteurs et expression du gène bla KPC-2

Indoor wireless headphones

XML (DTD) (XSD) DOM SAX XSL. XML feldolgozás

Szia! / Jó napot! (attól függően, hogy magázod vagy tegezed az adott személyt)

5. téma XML DB. Az adatkezelés és XML kapcsolata. Miért fontos az XML használata az adatbázis kezelésben?

Notion de probabilité. Ce que veut dire : «la probabilité d obtenir PILE en lançant une pièce non truquée est 1 2» ;

ASSOCIATION DES ETUDIANTS EN LANGUES, LETTRES ET CIVILISATIONS DE LYON III

Vizsgaszabályzat Francia nyelv 7-12.osztály

MATEMATIKA FRANCIA NYELVEN

Probabilités et informatique I Aléatoire et machine

Aspektus-orientált nyelvek XML reprezentációja

Az osztályozó vizsgák rendje és tematikája Francia nyelv tantárgyból évfolyam

MATEMATIKA FRANCIA NYELVEN

MATEMATIKA FRANCIA NYELVEN

Az AKCS-munkacsoport szeptember 16-i ülésén jóváhagyta ezt a szöveget.

MATEMATIKA FRANCIA NYELVEN MATHEMATIQUES

Helyi tanterv a Francia nyelv, mint 2. idegen nyelv tantárgyhoz a évfolyam számára

XML és XSLT (a színfalak mögül)

A tanévi. Országos Középiskolai Tanulmányi Verseny. első (iskolai) fordulójának. javítási-értékelési útmutatója

Kiskunság Maraton. Randonneurs Hongrie RH 2016

ASUS Transformer Pad útmutató

THESE. Pour obtenir le grade de DOCTEUR DE L UNIVERSITE DE TOURS. Discipline : Sciences de la vie Par. Fabrice BÉNÉDET. Soutenance le 23 juillet 1999

SZITUÁCIÓK ÉS SZÓKINCS AKTIVÁTOR FEJEZET

FRANCIA NYELV HELYI TANTERVE

Pázmány Péter Katolikus Egyetem Francia kapcsolat Kutatócsoport (Budapest) & RETINA International (AIAC Paris 8)

HOGYAN MONDHATJUK KI ISTENT? METODOLÓGIAI KÍSÉRLET

Version 1.0 Novembre 2002 POWERPLAY PRO-XL HA4700 POWERPLAY PRO-8 HA FRANÇAIS POWERPLAY PRO-XL HA4700/POWERPLAY PRO-8 HA8000 Man

Az XSLT elemei. Az XSLT áttekintése

Fax használati útmutató

Voyage Sortir Manger. Sortir Manger - À l'entrée. Sortir Manger - Commander à manger

TARTALOMJEGYZÉK (Table des matières)

10. évfolyam FRANCIA nyelv. Javítási-értékelési útmutató

Alloy 718 UNS: N 07718

Olvassa el figyelmesen az alábbi szöveget, majd annak alapján válaszoljon magyarul a kérdésekre! Maximális pontszám: 15

Francia C számú

NT-13498/NAT France-Euro-Express Nouveau 4 Tanmenetjavaslat

Kiskunság Maraton. Randonneurs Hongrie RH Baranya Maraton. Rendek Maraton. Au bord de l eau. Bakony Extreme. Eastern Tour. BRM Tour of Hungary

73684 M A G Y A R K Ö Z L Ö N Y évi 168. szám

CATHERINE FUCHS PÉTER BALOGH *

Oktatási Hivatal. Országos Középiskolai Tanulmányi Verseny 2012/2013. tanév. Francia nyelv II. kategória 1. forduló. Javítási-értékelési útmutató

Cher compatriote! Droit de vote Lors des élections parlementaires référendums 15 jours avant le jour du scrutin au plus tard L inscription


XML EXtensible Markup Language

KÖZGAZDASÁGI- MARKETING ALAPISMERETEK FRANCIA NYELVEN

FÖLDRAJZ FRANCIA NYELVEN

Balázs Jánosnál a konnektor terminus fel sem bukkan. Vele nagyjából egy időben viszont Nagy Ferenc pontos definíciót próbál adni:

Francia Nyelvtan Világosan. 10. lecke

MATEMATIKA FRANCIA NYELVEN


XML-HMTL Beadandó Dolgozat. Avagy, mit sikerült validálnunk fél év alatt

Bevándorlás Dokumentumok

Nyelvtani szerkezetek

A 2014/2015. tanévi Országos Középiskolai Tanulmányi Verseny első forduló FRANCIA NYELV I. KATEGÓRIA. Javítási-értékelési útmutató NYELVI TESZT

KÖZÉPSZINTŰ ÍRÁSBELI VIZSGA

Magyarországi Evangélikus Egyház Sztehlo Gábor Evangélikus Óvoda, Általános Iskola és Gimnázium

V. gyakorat: XML technikák MS SQL 2008-ban

XML adatkezelés. 11. témakör. Az XQuery nyelv alapjai. XQuery. XQuery célja egy imperatív lekérdező nyelv biztosítása. XQuery.

MATEMATIKA FRANCIA NYELVEN

Les noms de groupes sociaux dans les. anciens noms de communes Hongrois

FRANCIA NYELV JAVÍTÁSI-ÉRTÉKELÉSI ÚTMUTATÓ

KÖZGAZDASÁGI- MARKETING ALAPISMERETEK FRANCIA NYELVEN

A8-0176/54. A Bizottság által javasolt szöveg. Indokolás

MATEMATIKA FRANCIA NYELVEN MATHEMATIQUES

MATEMATIKA FRANCIA NYELVEN

Oktatási Hivatal. FRANCIA NYELV I. kategória. A 2017/2018. tanévi Országos Középiskolai Tanulmányi Verseny második forduló NYELVI TESZT.

BALASSI BÁLINT GIMNÁZIUM

Utazás Általános. Általános - Alapvető, létfontosságú dolgok. Általános - Beszélgetés

payer de commission? Asking whether there are commission fees when you withdraw money in a certain country

ASP.NET 2.0 (Whidbey) Mi várható a 2005-ös ASP.NET-ben?

Mesdames, Messieurs, chers parents, chers enfants,

FRANCIA NYELV JAVÍTÁSI-ÉRTÉKELÉSI ÚTMUTATÓ

Átírás:

Programme Introduction Documents structurés, XML, Bases de données Documents XML : description et manipulation Description de documents Modélisation XDM Localisation de composants XML -- XPath Transformation de documents XML XSLT Plus tard Typage -- XSchema Interrogation de documents XML -- XQuery 1 Transformer des données XML XSLT Objectifs Description d'une feuille de style Règles Processus de transformation Exemples XSLT : fonctions étendues 2

Bibliographie XSLT : XSL Transformation extensible Stylesheet Langage Transformations http://www.w3.org/tr/xslt Comprendre XSLT Bernd Amann et Philippe Rigaux, paru aux Editions O'Reilly Différents tutoriaux 3 Publication de données avec XSLT Extraire un contenu d un document XML pour le mettre dans un format reconnu par une application de publication particulière Trois versions différentes du document guide un site web, affichant les informations sur le guide, ses itinéraires et ses cotations un site WAP permettant de consulter sur un téléphone mobile les mêmes informations un document PDF donnant l ébauche de ce qui pourrait être un «Officiel des ballades» imprimé 4

Transformer un document? Extraire des fragments d'un document et les assembler différemment dans une structure nouvelle À l'aide d'un langage de requêtes (cf. XQuery) À l'aide de feuilles de style associer à certain type d élément des directives de transformation pour par exemple Conserver tel quel le résultat de cette transformation Indiquer des directives de présentation de leur contenu 5 Exemple (XML HTML) <?xml version="1.0"?> <exemple> <titre>ceci est un titre</titre> <auteur>ceci est un auteur</auteur> </exemple> <html> <head> <title> transformer le document exemple </titre> </head> <body> <h1>ceci est un titre</h1>> <h1>ceci est un auteur</h1> </body> </html> 6

Transformer un document : XSLT Le langage XSLT permet de construire un nouveau document XML à partir d'un document XML existant en le transformant La transformation s'exprime dans une feuille de style Une feuille de style est un document XML qui contient un ensemble de règles (template) Chaque règle décrit une transformation à appliquer à certains composants La feuille de style s applique à un document XML XSLT opère sur l'arbre (ordonné) du document source 7 Une feuille de style très simple Feuille de style vide Attribut version obligatoire xsl est le préfixe correspondant à l espace de noms du langage XSLT L espace de noms permet au processeur XSLT de reconnaitre les «instructions»du langage XSLT <xsl:stylesheet version='1.0' xmlns:xsl='http://www.w3.org/1999/xsl/transform'> <! ICI mettre un ensemble de règles (template) --> </xsl:stylesheet>

<exemple> <titre>ceci est un titre</titre> <auteur>ceci est un auteur</auteur> </exemple> Exemple <html> <head> <title> transformer le document exemple </titre> </head> <body> <h1>ceci est un titre</h1>> <h1>ceci est un auteur</h1> </body> </html> <xsl:stylesheet version = '1.0' xmlns:xsl='http://www.w3.org/1999/xsl/transform'> <xsl:template match="/"> <html> <head> <title> transformer le document exemple</title> </head> <body> <xsl:apply-templates/> </body> </html> <xsl:template match= auteur > <h1> <xsl:value-of select="."/> </h1> <xsl:template match= titre > <h1> <xsl:value-of select="."/> </h1> </xsl:stylesheet> 9 XSLT Une feuille de style contient une suite de règles (xsl:template) L application de la feuille de style consiste à parcourir le document source en partant de la racine pour chaque nœud rencontré dans ce parcours, chercher la règle à appliquer l application d une règle produit un fragment du document résultat Appel de règle = instruction xsl:apply-templates 10

Règles : deux parties Une partie déclaration spécification des nœuds sur lesquels la règle doit s'appliquer à l'aide d'une expression XPath (motif - pattern) les nœuds cibles sont atteints en suivant un chemin conforme à l expression Xpath donné Une partie exécution spécification de la transformation (modèle - template) définition de la forme du résultat à générer sur le flot de sortie quand la règle sera activée à l'aide d'une suite d'instructions qui s'appliquent aux nœuds filtrés en respectant l'ordre dans lequel elles sont données 11 Forme d'une règle <xsl:template match= pattern > transformation Le motif de sélection permet d atteindre les nœuds cibles de la transformation La transformation corps de la règle est décrite avec un mélange de règles et de syntaxe XML à générer sur le flot de sortie L ordre des règles n a pas d importance 12

Extraction de données On insère dans le résultat des fragments du document traité <xsl:value-of select= chemin /> <xsl:value-of select= pattern /> recopie de la valeur de chaque nœud atteint par le chemin XPath (depuis le nœud contexte) On donne un chemin d accès à un nœud à partir du nœud courant <xsl:template match= auteur > <h1> <xsl:value-of select="."/> </h1> 13 Exemple <?xml version="1.0"?> <table> <description>personnel 4ème étage</description> <personne><nom>bond</nom><bureau>u1</bureau></personne> <personne><nom>lupin</nom><bureau>u2</bureau></personne > <personne><nom>templar</nom><bureau>u3</bureau></personne> </table> <xsl:template match="personne"> <LI> <xsl:value-of select="nom"/> - <xsl:value-of select="bureau"/> </LI> <LI>Bond - U1</LI> <LI>Lupin - U2</LI> <LI>Templar - U3</LI> 14

Les patterns On ne peut pas associer n importe quelle expression XPath à l attribut match Certaines expressions seraient trop complexes à évaluer L expression doit toujours désigner un ensemble de nœuds <xsl:template match="1"> NON <xsl:templatematch="preceding::node()[5]"> NON 15 Axes possibles child les nœuds enfants d un élément Attribute les attributs d un élément // les descendants d un élément ou lui-même (descendant-or-self::node()/) 16

Exemple - instruction xsl:apply-templates <xsl:stylesheet version = '1.0' xmlns:xsl='http://www.w3.org/1999/xsl/transform'> <xsl:template match="/"> <html> <head> <title> transformation du document exemple</title> </head> <body> <xsl:apply-templates/> </body> </html> <xsl:template match= auteur > <h1> <xsl:value-of select="."/> </h1> <xsl:template match= titre > <h1> <xsl:value-of select="."/> </h1> </xsl:stylesheet> Applique l ensemble des règles à tous les fils du nœud contexte 17 L instruction xsl:apply-templates Elle a la forme suivante <xsl:apply-templates select= expression /> expression est un chemin XPath qui désigne les nœuds auxquels la règle doit s appliquer Sélection d un ensemble de nœuds constituant le contexte d évaluation la valeur par défaut de select est child::node() Application à tous les fils du nœud contexte si l attribut n apparaît pas apply-templates permet d indiquer l ordre de parcours du document source 18

Processus de transformation Il consiste à instancier des règles le corps de la règle est inséré dans le document résultat les instructions XSLT contenues dans le corps de la règle sont exécutées à leur tour le résultat d une instruction vient remplacer l instruction dans le résultat 19 Processus de transformation Le processeur XSLT analyse l arbre du document opère sur une liste de nœuds Réduite au nœud racine au départ cherche si une règle vérifie le nœud contexte Si oui, application des instructions contenues dans cette règle Instanciation de la transformation sur le flot de sortie S'il y en a une seule règle, elle est appliquée Si non, application des règles par défaut L arbre du document source est parcouru à partir de la racine Les nœuds textes sont recopiés dans l arbre résultat 20

Règles prédéfinies Elles spécifient une transformation par défaut si aucune des règles de la feuille de style n'est applicable Pour les nœuds racine et élément <xsl:template match="* /"> <xsl:apply-templates/> Si le noeud contexte est le nœud document ou un nœud element, continuer sur les fils de ce noeud Pour les nœuds texte et attribut <xsl:template match="text() @*"> <xsl:value-of select="." /> Recopie leur valeur (le texte ou la valeur de l attribut) sur le flot de sortie dans l arbre résultat 21 Processus de transformation Si plusieurs règles sont applicables? La priorité peut être spécifiée explicitement attribut priority Sinon la plus spécifique est choisie 22

Priorité entre règles : exemple <xsl:template match="personne"> <regle><xsl:apply-templates/></regle> <xsl:template match="personne[bureau]"> <Autreregle><xsl:apply-templates/></Autreregle> <?xml version="1.0"?> <table><description>personnel 4ème étage</description> <personne><nom>bond</nom><bureau>u1</bureau></personne> <personne><nom>lupin</nom></personne> <personne><nom>templar</nom><bureau>u3</bureau></personne> </table> Pour <personne> <personne> la première règle s'applique Pour <personne> <bureau> </bureau><personne> Seule la seconde s'applique 23 Priorité entre règles : autre exemple <xsl:template select="para"> <P><xsl:apply-templates</P> <xsl:template select= Para[@type="citation"] > <BLOCKQUOTE> <xsl:apply-templates/> </BLOCKQUOTE> Pour <Para>...</Para> La première règle s'applique Pour <Para type="citation">...</para> Seule la seconde s'applique

Un exemple complet 25 Document XML <?xml version="1.0"?> <bib> <livre> <titre>t1</titre> <auteur>a1</auteur> <auteur>a2</auteur> </livre> <article> <titre>t2</titre> <auteur>a3</auteur> <auteur>a4</auteur> </article> <livre> <titre>t3</titre> <auteur>a5</auteur> <auteur>a6</auteur> <auteur>a7</auteur> </livre> </bib> 26

... de XML vers HTML... <HTML> <HEAD> <TITLE> Entrées bibliographiques</title> </HEAD> <BODY> <TABLE> <TBODY> <TR><TD>t1</TD><TD>a1</TD><TD>a2</TD></TR> <TR><TD>t2</TD><TD>a3</TD><TD>a4</TD></TR> <TR> <TD>t3</TD><TD>a5</TD><TD>a6</TD><TD>a7</TD> </TR> </TBODY> </TABLE> </BODY> </HTML> 27 Feuille XSL : style.xsl (1) <xsl:transform xmlns:xsl="http://www.w3.org/1999/xsl/transform" version="1.0"> <xsl:template match="/"> <HTML> <HEAD><TITLE> Entrées bibliographiques</title> </HEAD> <BODY> <xsl-apply-templates/> </BODY> </xsl:transform> 28

Feuille XSL : style.xsl (2) <xsl:template match="titre"> <TD><xsl:value-of/></TD> <xsl:template match="auteur"> <TD><xsl:value-of/></TD> <xsl:template match="livre article"> <TR><xsl:apply-templates select="titre"/> <xsl:apply-templates select="auteur"/> </TR> <xsl:template match="bib"> <TABLE><TBODY><xsl:apply-templates/></TBODY></TABLE> + règles par défaut (ou les neutraliser) 29 Feuille de style : style.xsl (3) <?xml-stylesheet href= style.xsl type= text/xsl?> À insérer après le prologue dans le document à présenter Si l application sait interpréter cette instruction, la transformation et présentation seront effectives 30

L instruction xsl:apply-templates Sans attributs Attributs select et priority Attribut mode permet de choisir explicitement une des règles parmi celles qui sont candidates un nœud peut être traité plusieurs fois pour générer un résultat différent à chaque fois 31 <xsl:stylesheet xmlns:xsl = "http://www.w3.org/1999/xsl/transform" version = "1.0" > <xsl:output method = "xml" indent = "yes" /> <xsl:template match = "/" > <AAA > <xsl:apply-templates select = "//BBB" /> <xsl:apply-templates select = "//BBB" mode = "xxx" /> <xsl:apply-templates select = "//BBB" mode = "yyy" /> </AAA> <xsl:template match = "BBB" > <OOO > <xsl:value-of select = "." /> </OOO> <xsl:template match = "BBB" mode = "xxx" > <XXX > <xsl:value-of select = "." /> </XXX> <xsl:template match = "BBB" mode = "yyy" > <YYY > <xsl:value-of select = "." /> </YYY> </xsl:stylesheet> 32

exemple <AAA > <BBB>10 </BBB> <BBB>5 </BBB> <BBB>7 </BBB> </AAA> <?xml version="1.0" encoding="utf-8"?> <AAA xmlns:zvon="http://www.zvon.org/"> <OOO>10</OOO> <OOO>5</OOO> <OOO>7</OOO> <XXX>10</XXX> <XXX>5</XXX> <XXX>7</XXX> <YYY>10</YYY> <YYY>5</YYY> <YYY>7</YYY> </AAA> http://www.zvon.org/xxl/xsltreference/output/xslt_template_mode.html 33 Produire plusieurs résultats à partir d un nœud <xsl:stylesheet version = '1.0' xmlns:xsl='http://www.w3.org/1999/xsl/transform'> <xsl:template match="/"> <xsl:apply-templates select="//titre" mode="red"/> <xsl:apply-templates select="//titre" mode="blue"/> <xsl:apply-templates select="//titre"/> <xsl:template match="titre" mode="red"> <div style="color:red"> <xsl:value-of select="name()"/> <xsl:text> id=</xsl:text> <xsl:value-of select="@id"/> </div> <xsl:template match="titre" mode="blue"> <div style="color:blue"> <xsl:value-of select="name()"/> <xsl:text> id=</xsl:text> <xsl:value-of select="@id"/> </div> Modes <xsl:template match="titre"> <div style="color:purple"> <xsl:value-of select="name()"/> <xsl:text> id=</xsl:text> <xsl:value-of select="@id"/> </div> </xsl:stylesheet>

XSLT fonctions étendues Itération et tri Structure conditionnelle Variables Modes Et divers Construction d éléments et d attributs Il est possible de créer des éléments ou des attributs à l'aide de valeurs extraites du document source Deux modes de construction: Instanciation explicite Appel de fonction Méthode mixte Les { } indique qu il s agit d un chemin XPath qui doit être remplacé par sa valeur

Objectif Une solution pour introduire des attributs dans un élément quand : on ne connaît pas la valeur de l attribut on ne connaît ni la valeur ni le nom Même remarque avec les éléments 37 Exemples Instanciation explicite <title num= 1 > <xsl:value-of select= @title > </title> Appel de fonction <xsl:element name= {@title} > <xsl:attribute name= size > <xsl:value-of select= {count(section)} /> </xsl:attribute> </xsl:element> Méthode mixte <title name= {@title} />

Répétition Structure de répétition xsl:for-each parcourir un ensemble de nœuds sélectionnés avec select Les instructions sont appliquées successivement à chaque nœud sélectionné Pas de variable, donc pas d incrémentation Exemple <?xml version="1.0" encoding="utf-8"?> <R> <H1>titre1</H1> <H1>titresect1</H1> <H1>titre2</H1> <H1>titresect2</H1> </R> <?xml version="1.0" encoding="utf-8"?> <Texte> <Chapitre> <Titre>titre1</Titre> <Section> <Titre>titresect1</Titre> </Section> </Chapitre> <Chapitre> <Titre>titre2 </Titre> <Section> <Titre>titresect2</Titre> </Section> </Chapitre> </Texte> <xsl:template match="/"> <R> <xsl:for-each select=".//titre"> <H1> <xsl:apply-templates/> </H1> </xsl:for-each> </R>

Tri xsl:sort Tri des nœuds traités par xsl:for-each ou xsl:applytemplates Un critère de tri est une expression XPath A placer après la balise ouvrante de xsl:for-each ou xsl:apply-templates Par défaut, croissant (attribut order, valeur ascending ou descending) Il peut avoir plusieurs critères qui définissent les différents niveaux de tri Par défaut les nœuds sont triés sur leur position Exemple <?xml version="1.0" encoding="utf-8"?> <Texte> <Chapitre> <Titre>titre1</Titre> <Section> <Titre>titresect1</Titre> </Section> </Chapitre> <Chapitre> <Titre>titre2 </Titre> <Section> <Titre>titresect2</Titre> </Section> </Chapitre> </Texte>

Exemple <xsl:template match="/"> <R> <xsl:for-each select=".//titre"> <xsl:sort select=. /> <H1><xsl:apply-templates/></H1> </xsl:for-each> </R> <?xml version="1.0" encoding="utf-8"?> <R> <H1>titre1</H1> <H1>titre2</H1> <H1>titresect1</H1> <H1>titresect2</H1> </R> Traitement conditionnel xsl:if permet le traitement conditionnel d'un nœud <xsl:template match="list"> <xsl:for-each select="entry"> <xsl:value-of select="."/> <xsl:if test="not(position()=last())"> <xsl:text>, </xsl:text> </xsl:if> </xsl:for-each> <list> <entry type= c >item1</entry> <entry type= b >item2</entry> <entry type= a >item3</entry> <list> Pas de else item1,item2,item3

Copie de nœud Copie du nœud courant <xsl:copy select=. /> Copie de l arbre <xsl:copy-of select=. /> Variables XSLT permet de définir des variables <xsl:variable name= nom >valeur</xsl:variable> Les variables sont visibles dans toute la sous arborescence Un type particulier de variables les paramètres <xsl:param name= X />default</param>

Exemples <xsl:variable name= v1 > ceci est un <mot-cle>contenu</mot-cle> de variable </xsl:variable> <xsl:variable name= v1 select= 12 /> <xsl:variable name= v1 select= /COURS/ENSEIGNANTS /> Arbre temporaire auquel on peut appliquer une expression XPath 47 Templates nommés et Fonctions XSL permet de nommer un template et de l appeler explicitement à n importe quel endroit <xsl:template name = qname > <xsl:call-template name = qname > </xsl:call-template> Cela permet de définir des fonctions On peut passer des paramètres avec xsl:param

Une règle d affichage de nœud <xsl:template name="afficher"> <xsl:value-of select="position()"/> : <xsl:value-of select="."/> <xsl:template match="nom"> <xsl:call-template name="afficher"/> <xsl:template match="text()"> <xsl:call-template name="afficher"/> <xsl:template match="comment()"> <xsl:call-template name="afficher"/> 49 Document exemple <?xml version= 1.0 encoding="iso-8859-1"?> <COURS CODE="TC234"> <SUJET>Publication XSLT</SUJET> <ENSEIGNANTS> <!-- Enseignants responsables --> <NOM>Amann</NOM> <NOM>Rigaux</NOM> </ENSEIGNANTS> <PROGRAMME> <SEANCE ID="1">Documents XML</SEANCE> <SEANCE ID="2">Programmation XSLT</SEANCE> <ANNEE>2003</ANNEE> </PROGRAMME> </COURS>

On applique à ENSEIGNANTS <?xml version="1.0" encoding="iso-8859-1"?> <!-- Application de la règle à ENSEIGNANTS --> 1 : 2 : Enseignant responsable 3 : 4 : Amann 5 : 6 : Rigaux 7 : 51 Définition et déclenchement de règles Une règle est donc définie par l élément xsl:template Deux possibilités : L attribut match est une expression XPath définissant les «cibles» de la règle déclenchement par xsl:apply-templates L attribut name donne un nom à la règle <xsl:template name= TDM > déclenchement par xsl:call-template 52

Passage de paramètres On peut passer des paramètres à xsl:calltemplate ou xsl:apply-templates xsl:param : définition dans la règle des paramètres attendus xsl:with-param : association d un ou plusieurs paramètres à xsl:call-template ou xsl:apply-templates 53 Exemple de paramètres La règle Afficher attend une chaîne <xsl:template name="afficher"> <xsl:param name="texte" <xsl:value-of select="string( inconnu )"/> select="concat(position(), :, $texte)"/> texte est le nom du paramètre select donne la valeur par défaut $texte désigne le paramètre 54

Passage de paramètres Avec l instruction xsl:with-param à placer après xsl:call-template <xsl:template match="nom"> <xsl:call-template name="afficher"> <xsl:with-param name="texte" select="."/> </xsl:call-template> <xsl:template match="comment()"> <xsl:call-template name="afficher"> <xsl:with-param name="texte" select="string( Commentaire )"/> </xsl:call-template> 55 Passage de paramètres <xsl:template name="itemapuce"> <xsl:param name= "format">- </xsl:param> <fo:block> <xsl:value-of select="$puce"/> <xsl:apply-templates/> </fo:block> <xsl:template match="li"> <xsl:call-template name="itemapuce"> <xsl:with-param name="format">* </xsl:with-param> </xsl:call-template> <xsl:template match="dd"> <xsl:call-template name="itemapuce"> <xsl:with-param name="format"># </xsl:with-param> </xsl:call-template>

Inclusion de feuille de style Dans un document XML exprimée dans le document source avec une instruction de traitement Dans un feuille de style (inclusion de règles d une feuille XSLT dans une autre) <!-- Category: top-level-element --> <xsl:include href = uri-reference /> <xsl:import href = uri-reference /> Utilisation de plusieurs feuilles de style Utilisation de deux éléments de haut niveau Différence: la gestion des conflits <xsl:include href = uri-reference /> pas de notion de préséance <xsl:import href = uri-reference /> les règles importées ont une préséance moindre que celles du programme importateur

Utilisation de plusieurs feuilles de style <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/xsl/transform"> <xsl:import href="article.xsl"/> <xsl:import href="bigfont.xsl"/> xsl:import doit être le premier élément de premier niveau du programme Résumé Déclaration d un ensemble de règles s appliquant aux noeuds du document source (instruction xsl:template) Chaque règle produit un fragment du document résultat Parcours d un document, vu comme un arbre, avec des instructions xsl:apply-templates Le processeur choisit la règle s appliquant à chaque noeud sélectionné 60

Bilan Langage de règles Transformer pour Intégration de XPath Instructions Ce n est pas un langage de requêtes Une feuille de style pour un document (ou une classe de document) 61