Le langage XSLT. Transformation de fichiers XML



Documents pareils
XML par la pratique Bases indispensables, concepts et cas pratiques (3ième édition)

Production de documents avec XSLT. Production de documents p.1/??

Faculté de Génie Chaire industrielle en infrastructures de communication. La technologie XML. Wajdi Elleuch

Thierry BOULANGER. par la pratique. Bases indispensables Concepts et cas pratiques XML. 3 ième édition. Nouvelle édition

<?xml version="1.0" encoding="iso " standalone="yes"?>

Server-side XML. PAS FINI... mais ok pour un début. Originaux. Auteurs et version. Prérequis: Java de base, servlets, GUI et XML

Master d Informatique Corrigé du partiel novembre 2010

Langage HTML (2 partie) <HyperText Markup Language> <tv>lt La Salle Avignon BTS IRIS</tv>

PIVOT. Pivot/Querier Documentation technique XML/XSD/XSLT

BIRT (Business Intelligence and Reporting Tools)

Programmation des Applications Réparties. Parsers XML DOM et SAX

Document Object Model (DOM)

PHP 5.4 Développez un site web dynamique et interactif

4. SERVICES WEB REST 46

CRÉER, ROUTER ET GÉRER UNE NEWSLETTER, UN ING

Introduction aux concepts d ez Publish

Programmation Web. Madalina Croitoru IUT Montpellier

HTML. Notions générales

FileMaker Server 11. Publication Web personnalisée avec XML et XSLT

MAÎTRISE DE L ENVIRONNEMENT WINDOWS VISTA

INTRODUCTION A JAVA. Fichier en langage machine Exécutable

LANGAGUE JAVA. Public Développeurs souhaitant étendre leur panel de langages de programmation

Gestion Électronique de Documents et XML. Master 2 TSM

Adobe Technical Communication Suite 5

From supply chain to demand chain

Module BDWEB. Maîtrise d informatique Cours 9 - Xquery. Anne Doucet. anne.doucet@lip6.fr

La balise object incorporer du contenu en HTML valide strict

Programmation Internet Cours 4

Formation HTML / CSS. ar dionoea

BES WEBDEVELOPER ACTIVITÉ RÔLE

ECLIPSE ET PDT (Php development tools)

Outils logiciels pour l'ingénierie documentaire

INTERNET est un RESEAU D ORDINATEURS RELIES ENTRE EUX A L ECHELLE PLANETAIRE. Internet : interconnexion de réseaux (anglais : net = réseau)

TIC. Réseau informatique. Historique - 1. Historique - 2. TC - IUT Montpellier Internet et le Web

Installation d un serveur HTTP (Hypertext Transfer Protocol) sous Débian 6

XML, PMML, SOAP. Rapport. EPITA SCIA Promo janvier Julien Lemoine Alexandre Thibault Nicolas Wiest-Million

données en connaissance et en actions?

Développement d applications Internet et réseaux avec LabVIEW. Alexandre STANURSKI National Instruments France

Devenez un véritable développeur web en 3 mois!

HMTL. Exemple de fichier HTML. Structure d un document HTML. Exemple de fichier HTML. Balises HTML. IFT1147 Programmation Serveur Web avec PHP

THEME PROJET D ELABORATION D UNE BASE DE DONNEES SOUS LE SERVEUR MYSQL

Programme «Analyste Programmeur» Diplôme d état : «Développeur Informatique» Homologué au niveau III (Bac+2) (JO N 176 du 1 août 2003) (34 semaines)

les techniques d'extraction, les formulaires et intégration dans un site WEB

REQUEA. v PD 20 mars Mouvements d arrivée / départ de personnels Description produit

Gestion d identités PSL Exploitation IdP Authentic

Dans nos locaux au 98 Route de Sauve NÎMES. Un ordinateur PC par stagiaire, scanner, imprimante/copieur laser couleur

SII Stage d informatique pour l ingénieur

Introduction à Microsoft InfoPath 2010

Optimiser pour les appareils mobiles

Les outils de création de sites web

Chapitre IX. L intégration de données. Les entrepôts de données (Data Warehouses) Motivation. Le problème

Sage 100 CRM - Guide de la Fusion Avancée Version 8. Mise à jour : 2015 version 8

Les services usuels de l Internet

Évaluation des compétences. Identification du contenu des évaluations. Septembre 2014

Faculté Polytechnique de Mons. Le processus d Extraction, Transformation et Load (ETL) dans des entrepôts de données XML

Générer du code à partir d une description de haut niveau

Architectures web/bases de données

Magento. Magento. Réussir son site e-commerce. Réussir son site e-commerce BLANCHARD. Préface de Sébastien L e p e r s

CMS Made Simple Version 1.4 Jamaica. Tutoriel utilisateur Récapitulatif Administration

SP1 : Intégration d'une vidéo dans une mardi 21/01/2014. page web, fonction du format vidéo et 3 mercredi 22/01/2014

Bureautique Initiation Excel-Powerpoint

ContactForm et ContactFormLight - Gestionnaires de formulaire pour Prestashop Edité par ARETMIC S.A.

HTML, CSS, JS et CGI. Elanore Elessar Dimar

Une sélection d'éléments docbook

1. Considérations sur le développement rapide d'application et les méthodes agiles

Design et implémentation d un logiciel de validation et de génération de configurations réseaux

FileMaker Server 12. publication Web personnalisée avec XML

Introduction à. Oracle Application Express

2 LES BASES DU HTML 19 Qu est-ce que le HTML? 20 De quand date le HTML? 20 Écrire son propre code HTML 22

Anne Tasso. Java. Le livre de. premier langage. 10 e édition. Avec 109 exercices corrigés. Groupe Eyrolles, , ISBN :

Malgré son aspect spartiate, Freeplane offre de nombreuses fonctionnalités en particulier dans le domaine de la diffusion des cartes sur le Web.

Comment créer des rapports de test professionnels sous LabVIEW? NIDays 2002

Couches 4 à 7 : Traitement des données

Internet. DNS World Wide Web. Divers. Mécanismes de base Exécution d'applications sur le web. Proxy, fire-wall

Les structures de données. Rajae El Ouazzani

PRESENTATION. Parcours de formation à distance A destination des personnels en contrats aidés

Projet 2. Gestion des services enseignants CENTRE D ENSEIGNEMENT ET DE RECHERCHE EN INFORMATIQUE. G r o u p e :

TD3 - Facturation avec archivage automatisé

Utilisation de Jakarta Tomcat

Gestion documentaire (Extraits du CCI version 1.2)

.. CSS. Damien Nouvel. Damien Nouvel (Inalco) CSS 1 / 15

RESPONSIVE WEB DESIGN

Introduction aux «Services Web»

Solutions en ligne Guide de l utilisateur

Dans l'article précédent, vous avez appris

Programmation Internet

WordPress Référencement naturel (SEO) Optimiser. son référencement. Daniel Roch. Préface d Olivier Andrieu

Business Process Execution Language

Introduction à Expression Web 2

Créer le schéma relationnel d une base de données ACCESS

Présentation du langage et premières fonctions

Vérifier la qualité de vos applications logicielle de manière continue

Présentation Alfresco

BASE DE DONNÉES XML NATIVE

TP JAVASCRIPT OMI4 TP5 SRC

< Atelier 1 /> Démarrer une application web

ODS : organiser et diffuser des sorties

SQL Server Installation Center et SQL Server Management Studio

TP2 : Client d une BDD SqlServer

FreeMind. Freeplane XMind. 2 e édition. Bien démarrer avec le Mind Mapping. . Groupe Eyrolles, 2010, ISBN :

Transcription:

Le langage XSLT Transformation de fichiers XML 1

Présentation générale Règles élémentaires Construction du document résultat Structures itératives et conditionnelles Variables XSL Règles paramétrées, et avec noms Autres aspects Conclusion 2

Présentation (1) XSL = XML Stylesheet Language XSL est un langage de feuilles de styles. XSLT-1.0 est une Recommandation du W3C composée de : XSLT: un langage de transformation XPath: déjà étudié, sélection de noeuds XSL-FO: un jeu d'instructions de formatage en XML destiné a la présentation 3

Présentation (2) XSLT permet de transformer un document XML en un autre document XML ou bien dans un autre format, à des fins de: affichage: on peut obtenir un document HTML pour la visualisation (comparable à CSS). On peut également produire des fichiers textes, PDF, adaptation: on veut adapter les données contenues dans le document pour obéir à une DTD donnée 4

XPath, XSL-FO XPath: XSLT permet de spécifier un certain nombres d opérations à exécuter lorsqu on rencontre un élément particulier. => On utilise XPath pour désigner les parties du documents sur lesquelles on veut travailler. XSL-FO: la partie formatage comporte : le modèle de formatage: boites, positionnement, ordonnancement, de quelle manière les pages sont organisées et comment l information «coule» d une page à une autre des propriétés d'affichage: text-align, margin-left, background, fontes, 5

XSLT = XSL Transformations fichier XSLT fichier XSLT fichiers XSLT fichiers XML processeur XSLT fichiers TXT document XML 1 fichiers HTML XHTML document XML 2 6

Processeur XSLT (1) Un évaluateur de feuille de style lit un document XSLT, un document XML et produit un document en sortie en appliquant les instructions/spécifications données dans la feuille de style L évaluateur peut être intégré à un butineur : Firefox, Explorer... ou bien intégré au serveur, pour la création dynamique de pages Web, e.g. le projet Apache XML Cocoon: http://cocoon.apache.org/ 7

Processeur XSLT L évaluateur peut être un exécutable «standalone» utilisé depuis la ligne de commande. Par exemple en utilisant Xalan : java org.apache.xalan.xslt.process -IN file.xml -XSL file.xsl -OUT Quelques processeurs classiques : - Xalan - Xerces - Saxon - Sablotron -... 8

Présentation générale Règles élémentaires Construction du document résultat Structures itératives et conditionnelles Variables XSL Règles paramétrées, et avec noms Autres aspects Conclusion 9

Structure d une feuille de style Une feuille de style est un document XML de la forme <xsl:stylesheet xmlns:xsl= "http://www.w3.org/1999/xsl/transform" version="1.0"> <xsl:template match="path"> [description du template] </xsl:template> </xsl:stylesheet> L espace de noms associé au langage XSLT est http://www.w3.org/1999/xsl/transform Le préfixe usuel est xsl. On peut utiliser xsl:transform au lieu de xsl:stylesheet 10

Modèle d exécution Une feuille de style XSLT est constituée d un prélude suivi d une séquence de règles de transformation de la forme : <xsl:template match="chemin"> transformations </xsl:template> Une règle comporte deux parties : un modèle de chemin exprimé en termes du langage XPath (identifie un ensemble de nœuds) une transformation sous la forme d une séquence de caractères ou d éléments dont certains sont des instructions XSLT 11

Modèle d exécution L évaluation d un template se fait à partir d un noeud contexte. Le noeud contexte initial est le nœud racine À partir d un nœud contexte, l évaluation se déroule de la manière suivante: on cherche le template ayant le modèle de chemin le plus précis et qui matche le nœud contexte on instancie le template retenu à l étape précédente. La transformation peut créer un fragment du document résultat (en insérant du texte dans le flot de sortie) et instantier de nouveaux templates. L évaluation continue ensuite récursivement. Un ensemble de nœud est évalué en prenant chacun des nœuds de l ensemble comme nœud contexte puis en concaténant les résultats obtenus. 12

Règles prédéfinies (= par défaut) Les règles prédéfinies s appliquent en l absence de règles applicables définies dans la feuille de style. Elles ont une priorité plus faible que celles-ci. Exemple: pour les nœuds racine et éléments on poursuit le traitement sur les nœuds fils du nœud contexte : <xsl:template match= "* /"> <xsl:apply-templates/> </xsl:template> Exemple: pour les nœuds textes et attributs on recopie leurs valeurs dans le flot de sortie : <xsl:template match= "text() @*"> <xsl:value-of select="."/> </xsl:template> 13

Balise template Cet élément définit un modèle à appliquer à un nœud et à un contexte spécifiques. Utilisation : <xsl:template name="nommodele" match="expressionxpath" mode="nommode"> </xsl:template> name : associe un nom au modèle (optionnel) match : indique quel nodeset sera affecté par le modèle (obligatoire) mode : permet à un même élément d'avoir plusieurs modèles, selon le contexte (optionnel) priority : utilisé en cas de conflit entre deux règles ayant la même condition (optionnel) 14

Un Premier Exemple Application d une feuille de style XSL à un document XML pour l afficher dans un navigateur web : 1/ instruction de traitement dans le fichier XML <?xml-stylesheet type="text/xsl" href="wg.xsl"?> 2/ choix d un noeud de départ dans la feuille de style <xsl:template match="/"> 3/ balise de base <xsl:value-of select = "expressionxpath"/> 15

Un Premier Exemple (2) <?xml version="1.0"?> <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/xsl/transform"> <xsl:template match="/"> <html> <head> <title>présentation HTML de wg.xml</title> </head> <body> <h1>groupe de travail, <xsl:value-of select="gdt/@month"/> <xsl:value-of select="gdt/@year" /></h1> <h2>le <xsl:value-of select="gdt/expose/@day"/> <xsl:value-of select="gdt/@month"/> :</h2> <p>présentation de <xsl:value-of select="gdt/expose/speaker" /></p> <h3>titre:</h3> <p><xsl:value-of select="gdt/expose/title" /></p> </body> </html> </xsl:template> </xsl:stylesheet> <?xml version="1.0"?> <?xml-stylesheet type="text/xsl" href="wg.xsl"?> <gdt month="février" year="2004"> <expose day="5"> <speaker>nicolas Baudru</speaker> <title>netcharts et HMSC</title> <time>12h45</time> <salle>102</salle> </expose> </gdt> 16

Présentation générale Règles élémentaires Construction du document résultat Structures itératives et conditionnelles Variables XSL Règles paramétrées, et avec noms Autres aspects Conclusion 17

Construction du document résultat Plusieurs opérations possibles : insérer la valeur d un noeud du document d entrée copier un fragment du document d entrée insérer un nouvel élément de valeur statique insérer un nouvel élément de valeur dynamique 18

Balise xsl:value-of Cet élément permet d'insérer la valeur d'un nœud dans la transformation. Ce nœud est sélectionné par une expression XPath. Cette expression peut correspondre à un élément, à un attribut ou à tout autre nœud contenant une valeur : <xsl:value-of select="expressionxpath" /> select : la valeur de l attribut select est évaluée, et c est cette évaluation qui sera insérée lors de la transformation. (obligatoire) pour un noeud x de type élément, la valeur retournée est la concaténation des noeuds textes du sous-arbre enraciné en x pour un ensemble de noeuds, seule la valeur du premier est retournée. 19

Copie d un fragment <xsl:copy-of select="path"/> Recopie dans le flot de sortie le fragment du document à transformer sélectionné par la requête XPath à partir du noeud contexte. Ce fragment peut être constitué de plusieurs noeuds. Exemple : <xsl:copy-of select="gdt/expose"/> Recopie les éléments expose désignés et leur contenu.. 20

Fragment résultat élément <xsl:element name="balise">... </xsl:element> construit un noeud élément de nom balise avec les attributs et contenus définis dans le corps de l élément xsl:element Exemple : <xsl:element name="p"><xsl:value-of select="para" /></xsl:element> Crée une balise p contenant le texte présent dans l élément para du document d origine. 21

Fragment résultat attribute <xsl:attribute name="att">valeur</xsl:attribute> construit un attribut nommé att (à utiliser à l intérieur d un élément xsl:element) Exemple : <xsl:element name="image"> <xsl:attribute name="src"> <xsl:value-of select= @adresse /> </xsl:attribute>... </xsl:element> Crée une balise image, ayant un attribut src dont la valeur est celle de l attribut adresse de l élément d origine : < image src ="test.gif"></image> 22

Syntaxe courte Dans une feuille de style, on peut en fait insérer directement de nouvelles balises : <image>... </image> Pour faire référence au document d origine, un élément peut contenir dans ses attributs des «expressions attributs» de la forme {path}, où path est une expression XPath qui est évaluée vers une chaîne de caractères : <image src="{@adresse}"></image> Inconvénients de la syntaxe courte? - dure à relire si les expressions XPath sont longues - automatisation plus complexe 23

Syntaxe courte/syntaxe longue? On peut utiliser la syntaxe courte seulement si le nom de l élément est «statique». On peut quand même avoir des attributs «dynamiques». La syntaxe longue est obligatoire pour automatiser la construction d éléments «dynamiques». La syntaxe courte est plus concise, mais elle peut être plus difficile à relire si les expressions XPath sont complexes. 24

Document XML <?xml version="1.0"?> <Guide> <Restaurant Categorie="**"> <Nom>Le Romantique</Nom> <Adresse> <Ville>Cabourg</Ville> <Dept>Calvados</Dept> </Adresse> </Restaurant> <Restaurant Categorie="***"> <Nom>Les TroisGros</Nom> <Adresse> <Ville>Roanne</Ville> <Dept>Loire</Dept> </Adresse> </Restaurant> </Guide> Exemple Feuille de style XSLT <?xml version="1.0"?> <xsl:stylesheet xmlns:xsl="http://www.w3.org/xsl"> <xsl:template match="/"> <html><head><b>essai XSL</B></head> <body><xsl:apply-templates/></body></html> </xsl:template> <xsl:template match="guide"> <H1>BONJOUR LE GROUPE XML</H1> <H2>SUIVEZ LE GUIDE</H2> <xsl:apply-templates /> </xsl:template> <xsl:template match="restaurant"> <P> <I>Restaurant :</I> <xsl:value-of select="nom"/></p> </xsl:template> </xsl:stylesheet> 25

Présentation générale Règles élémentaires Construction du document résultat Structures itératives et conditionnelles Variables XSL Règles paramétrées, et avec noms Autres aspects Conclusion 26

Balise xsl:apply-templates On a besoin, à l intérieur d une règle, de faire appel à d autres règles. Cette balise permet de déclencher l application de règles sur un ensemble de noeuds (les règles appliquées sont choisies selon le principe décrit précédemment). <xsl:apply-templates/> La liste des nœuds à traiter est constituée des nœuds fils du nœud contexte. <xsl:apply-templates select="path"/> La liste des nœuds à traiter est constituée des nœuds atteints par le chemin path depuis le nœud contexte. 27

Ajouter un mode à une template On peut associer un mode à une instruction xsl:template et activer une règle en utilisant un nom de mode spécifique dans xsl:apply-templates : <xsl:template match="path" mode="name"> <xsl:apply-templates select=" " mode="name"> 28

Balise xsl:for-each <xsl:for-each select="cheminxpath">... instructions... </xsl:for-each> applique les instructions à tous les noeuds désignés par le chemin XPath. Exemple : <xsl:template select= bibliotheque > <ul> <xsl:for-each select= livre > <li> Titre : <xsl:value-of select="titre" />.</li> </xsl:for-each> </ul> </xsl:template> 29

Tri des résultats Par défaut on suit l ordre du document On peut trier les noeuds d un node-set en spécifiant un ou plusieurs axes de tri dans les instructions xsl:apply-templates et xsl:for-each <xsl:sort select="expression" /> Attributs possibles: order : ascending descending Lang : "..." data-type : text number case-order : upper-first lower-first 30

Expressions conditionnelles (1) On peut tester la valeur (booléenne) d une expression XPath et exécuter un template si la valeur est vraie : (en pratique on teste souvent l existence d un noeud) <xsl:if test="expression"> </xsl:if> Exemple classique : <xsl:if test="livre"> <ul> <xsl:for-each select="livre"> <li> <xsl:value-of select="titre" />. <xsl:if test="@langue='français'">ce livre est en français.</xsl:if> </li> </xsl:for-each> </ul> 31

Expressions conditionnelles (2) Equivalent du switch en C : (sur un exemple) <ul> <xsl:for-each select="livre"> <li> <b><xsl:value-of select="auteur" /><br /></b> <xsl:value-of select="titre" /> <xsl:choose> <xsl:when test="@langue='francais'">ce livre est en français.</xsl:when> <xsl:when test="@langue='anglais'">ce livre est en anglais.</xsl:when> <xsl:otherwise>ce livre est dans une langue non répertoriée.</xsl:otherwise> </xsl:choose> </li> </xsl:for-each> </ul> 32

Présentation générale Règles élémentaires Construction du document résultat Structures itératives et conditionnelles Variables XSL Règles paramétrées, et avec noms Autres aspects Conclusion 33

Variables Une variable est un nom associé à une valeur (ce sont des variables non-mutables). La valeur peut être obtenue par une expression XPath ou bien par le contenu de l élément xsl:variable. Pour obtenir la valeur d une variable $nom_var Exemples : <xsl:variable name='v1' select='12'/> <xsl:variable name='v2' select='$v1+1'/> <xsl:variable name='v3' select='@day'/> <xsl:variable name='v4'>3</xsl:variable> 34

Variables (2) Une variable a une portée : l'élément dans lequel elle est déclarée et ses descendants. Exemple : <date annee= 2009 mois= octobre jour= $v3 /> On peut aussi enregistrer dans une variable un fragment du document d entrée. Exemple : <xsl:variable name= exposes select= gdt/expose /> 35

Présentation générale Règles élémentaires Construction du document résultat Structures itératives et conditionnelles Variables XSL Règles paramétrées, et avec noms Autres aspects Conclusion 36

Templates comme fonctions On peut aussi donner un nom à une règle et l appeler comme un fonction: <xsl:template name="nom">... </xsl:template> <xsl:call-template name="nom"/> C est une méthode qui permet d utiliser plusieurs fois les mêmes éléments dans un document. 37

Paramètres (1) Un template peut avoir des paramètres (encore une fois comme une fonction). On déclare au début de la fonction les paramètres qu elle utilise : <xsl:param name= p1 /> S utilise en combinaison avec l instruction <xsl:with-param> 38

Paramètres (2) Un exemple : définition de la fonction à un paramètre <xsl:template name="polynome"> <xsl:param name="variable_x" /> <xsl:value-of select="2*$variable_x*$variable_x+(-5)*$variable_x+2" /> </xsl:template> Puis appel à la fonction : <xsl:call-template name="polynome"> <xsl:with-param name="variable_x" select="3.4" /> </xsl:call-template> 39

Paramètres (3) Un paramètre est très similaire à une variable. La seule différence est que sa valeur peut être modifiée. Un paramètre a un nom, une portée et une valeur par défaut. Pour obtenir sa valeur $param <xsl:param name="p1" select="expr"/> 40

Présentation générale Règles élémentaires Construction du document résultat Structures itératives et conditionnelles Variables XSL Règles «fonctions», et paramétrées Autres aspects Conclusion 41

Autres instructions Sur des ensembles de noeuds : <xsl:number select= > numérotation, <xsl:processing-instruction name=" "> construit un noeud instruction de traitement. attribute-set: pour grouper des déclarations d attributs fonctions XPath additionnelles (dans le cas de documents multiples): document, format-number, current,... 42

Exemple <report><title>2004</title> <entry filename="wg-jan.xml"/> <entry filename="wg-feb.xml"/> <entry filename="wg-mar.xml"/> </report> <xsl:template match="/"> <xsl:for-each select="/report/entry"> <xsl:apply-templates select="document(@filename)"/> </xsl:for-each> </xsl:template> 43

Fragment résultat littéraux Un fragment résultat littéraux est un élément permettant d émettre une chaîne de caractères (une constante) dans le flot de sortie. On peut émettre du texte, sans caractères de contrôle, mais aussi des éléments n appartenant pas au namespace XSL <xsl:text>... </xsl:text> Ou directement le texte à l intérieur du template (il doit être au moins dans une balise) <xsl:template match=" "> <h1>du texte On peut également insérer des commentaires <xsl:comment>... </xsl:comment > 44

Gestion des espaces inutiles On peut indiquer les éléments contenant des espaces inutiles en ajoutant l instruction suivante: <xsl:strip-space elements="path"/> Cette instruction indique à XSL «d omettre» tous les nœuds textes se trouvant en-dessous de path et qui contiennent uniquement des espaces. Le comportement pour les nœuds contenant des caractères autre que des espaces n est pas modifié On peut également se débarrasser des espaces se trouvant «aux extrémités» des nœuds textes: <xsl:template match="text()"> <xsl:value-of select="normalize-space ()"/> </xsl:template> 45

Utilisation dans un butineur Les documents XML qui doivent être «directement transformés» au niveau du butineur peuvent contenir une instruction de traitement (P.I.) xml-stylesheet indiquant où trouver la feuille de style nécessaire Si la feuille de style est un document XSLT la valeur du pseudo-attribut type doit être application/xml <?xml-stylesheet type="application/xml" href="http://www.lif.fr/file.xsl"?> Remarque: Microsoft Internet Explorer utilise type="text/xsl" bien que text/xsl ne soit pas un type de média MIME valide. 46

Exemple <?xml version="1.0" encoding="iso-8859-1"?> <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/ 1999/XSL/Transform"> <xsl:template match="facture"> <xsl:apply-templates select="montant" /> </xsl:template> <xsl:template match="montant"> Le montant numéro <xsl:number count="montant" /> vaut <xsl:value-of select="." />. </xsl:template> </xsl:stylesheet> 47

Exemple 2 <?xml version="1.0" encoding="iso-8859-1"?> <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/xsl/transform"> <xsl:template match="cdlist"> <html><head><title> Exercice 1 </title></head><body> Les compositions sont : <ul><xsl:apply-templates select="cd/performance/composition"/> </ul></body></html> </xsl:template> <xsl:template match="composition"> <li><xsl:value-of select="."/></li> </xsl:template> </xsl:stylesheet> 48

Présentation générale Règles élémentaires Construction du document résultat Structures itératives et conditionnelles Variables XSL Règles «fonctions», et paramétrées Autres aspects Conclusion 49

Quelques instructions vues xsl:template : définition d une règle xsl:value-of, xsl:copy-of : insérer (valeur d ) un noeud xsl:element, xsl:attribute : création de noeuds xsl:apply-templates, xsl:call-template : manipulations de règles xsl:for-each : boucles xsl:if, xsl:when, xsl:choose : tests xsl:text, xsl:comment, xsl:processing-instruction : insertion de noeuds spéciaux xsl:variable, xsl:parameter 50

TrAX Il n existe pas d API standard pour manipuler des feuilles de style XSLT qui soit utilisable sur plusieurs plateformes ou avec différents langages Il existe des API propriétaires comme par exemple TrAX (Transformations API for XML), inclus dans JAXP existe uniquement pour Java n est pas supporté par tous les engins XSLT 51

XSL 2.0 Recomandation W3C du 23 janvier 2007 Utilisation de XPath 2.0, ce qui implique l utilisation de séquences et des Schémas XML Possibilité d avoir de multiples document résultats <xsl:result-document href="file"> template </xsl:result-document> Output method pour XHTML Validation pour les schémas 52

Conclusion XSLT XML = format de présentation de données facilement échangeables sur le web production d une source unique en XML XSLT permet d adapter la présentation des données à n importe quelle application XSLT peut être vu comme le langage de programmation de XML 53