Flux rss
Bookmark Ajouter aux favoris / Partager

XSLT et XSL/FO

XSL (eXtensible Stylesheet Language) possède deux composantes :

  • XSLT, eXtensible Stylesheet Transformation
  • XSL/FO, eXtensible Stylesheet formatting

  • le langage de transformation des données (XSLT, eXtensible Stylesheet Transformation) permettant de transformer la structure des éléments XML.

    Un document XML peut être représenté comme une structure arborescente. Ainsi XSLT permet de transformer les documents XML à l'aide de feuilles de style contenant des règles appelées template rules (ou règles de gabarit en français).

    Le processeur XSLT (composant logiciel chargé de la transformation) crée une structure logique arborescente (on parle d'arbre source) à partir du document XML et lui fait subir des transformations selon les template rules contenues dans la feuille XSL pour produire un arbre résultat représentant, par exemple, la structure d'un document HTML. Les composants de l'arbre résultat sont appelés objets de flux.

    Chaque template rule définit des traitements à effectuer sur un élément (noeud ou feuille) de l'arbre source. On appelle "patterns" (en français motifs, parfois "éléments cibles") les éléments de l'arbre source.

    L'arbre source peut être entièrement remodelé et filtré ainsi qu'ajouter du contenu à l'arbre résultat, si bien que l'arbre résultat peut être radicalement différent de l'arbre source.

  • le langage de formatage des données (XSL/FO), c'est-à-dire un langage permettant de définir la mise en page (affichage de texte ou de graphiques) de ce qui a été cré par XSLT.

    Une fois l'arbre source créé, XSL/FO permet de formater le résultat, c'est-à-dire d'interpréter l'arbre résultat, ou plus exactement les objets de flux le composant en leur appliquant des objets de mise en forme afin d'en faire une représentation visuelle (papier, écran, ...)

Les template rules (règles de gabarit)

Les template rules sont des balises XSL permettant de définir des opérations à réaliser sur certains éléments du document XML utilisant la page XSL, c'est-à-dire généralement de transformer un tag XML et au moins un tag HTML (généralement plusieurs).

Ainsi le tag XML suivant :

<personne>

<nom>Pillou</nom>

<prenom>Jean-François</prenom>

</personne>

<personne>

<nom>VanHaute</nom>

<prenom>Nico</prenom>

</personne>

<personne>

<nom>Andrieu</nom>

<prenom>Seb</prenom>

</personne>
pourra être transformé en les tags HTML suivants :
<ul>

<li>Pillou - Jean-François</li>

<li>VanHaute - Nico</li>

<li>Andrieu - Seb</li>

</ul>

L'attribut "match" de la balise <xsl:template> permet de définir (grâce à la notation XPath) le ou les éléments du document XML sur lesquels s'applique la transformation.

<xsl:template match="conditions"/>

La notation Xpath permet de définir des patterns, c'est-à-dire des chaînes de caractères permettant de repérer un noeud dans le document XML. Les principaux patterns sont :

Pattern Exemple Signification
Nom toto Sélectionne les éléments par leur nom
Nom[0] toto[0] Sélectionne le premier élément ayant un nom donné (toto[0] sélectionne le premier élément rencontré ayant le nom 'toto')
Nom[end()] toto[end()] Sélectionne le dernier élément ayant un nom donné
| Gauche|Milieu Indique une alternative (un noeud OU bien l'autre (ou les deux))
/ ou Arbre/Feuille /
  • utilisé seul: Définit l'élément de plus haut niveau de l'arborescence (appelé root ou racine en français) ainsi que (de façon implicite) tous ses éléments fils.
  • utilisé entre deux éléments: décrit la localisation d'un élément dans son arborescence (comme pour l'arborescence des répertoires sur un disque - /usr/bin/toto)
* * Motif "joker" désignant n'importe quel élément
// //personne Indique tous les descendants d'un noeud
. . Caractérise le noeud courant
.. .. Désigne le noeud parent. Permet de remonter d'un niveau dans l'arborescence hiérarchique
@ @nom Indique un attribut caractéristique (@nom décrit l'attribut value). La notation @* désigne tous les attributs d'un élément
text() text() Désigne le contenu d'un élément (le texte contenu entre ses balises)
ID() ID('a2546') Sélectionne l'élément dont l'identifiant (la valeur de l'attribut ID) est celui spécifié en paramètre

La transformation peut être réalisée

  • soit par ajout de texte,
  • soit en définissant des éléments de transformation, c'est-à-dire des éléments permettant de définir des règles de transformation à appliquer aux éléments sélectionnés par l'attribut match

Voici un exemple de feuille XSL permettant d'effectuer la transformation XML vers HTML décrite ci-dessus :

<?xml version="1.0" encoding="ISO-8859-1"?>

<xsl:stylesheet
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns="http://www.w3.org/TR/REC-html40"
result-ns="">

	<xsl:template match="/">

		<HTML>

		<HEAD>

		  <TITLE>Titre de la page</TITLE>

		</HEAD>

		<BODY BGCOLOR="#FFFFFF">

		<xsl:apply-templates/>

		</BODY>

		</HTML>

	</xsl:template >

	<xsl:template match="personne" >

		<ul>

			<li>

			<xsl:value-of select="nom"/>

			-
			<xsl:value-of select="prenom"/>

			</li>

		</ul>

	</xsl:template >

</xsl:stylesheet>
Voici la signification de cette feuille XSL
  • Le premier tag <xsl:template> permet d'appliquer une transformation à l'ensemble du document (la valeur "/" de l'attribut match indique l'élément racine du document XML). Ce tag contient des balises HTML qui seront transmises dans l'arbre résultat
  • L'élément <xsl:apply-templates/> indique le traitement de tous les enfants directs de la racine.
  • La balise <xsl:template match="personne" > permet d'aller traiter les éléments de type personne
  • Enfin les deux éléments <xsl:value-of select="nom"/> et <xsl:value-of select="prenom"/> permettent de recuperer les valeurs des balises nom et prenom


Dernière modification le mardi 14 octobre 2008 à 17:40:30.Ce document intitulé « Transformations de XML avec XSLT » issu de Comment Ça Marche (www.commentcamarche.net) est mis à disposition sous les termes de la licence Creative Commons. Vous pouvez copier, modifier des copies de cette page, dans les conditions fixées par la licence, tant que cette note apparaît clairement.
XML --(XSLT)--> Excel ? salut a tous.je voudrais savoir si on pouvait avoir un fichier Excel a partir d'un fichier XML avec le langage de transformation XSLT? www.commentcamarche.net/forum/affich-2867321-xml-xslt-excel
XML->XSL->CSV (Résolu) Bonjour, J'ai un petit problème pour transformer un fichier XML en CSV avec XSL J'ai un fichier XML qui a ce format : X1 www.commentcamarche.net/forum/affich-3538212-xml-xsl-csv
Transformer un xml en dtd Bonjour, Je suis actuellement sous notepad++ ou j'ai créé un fichier xml. J'aimerais maintenant le transformer en dtd. Dois-je le réécrire entièrement ou existe-t-il une fonction de notepad++ afin de le faire directement? Merci à tous www.commentcamarche.net/forum/affich-12617457-transformer-un-xml-en-dtd
Transformer un fichier Word (.doc) en PDFTransformer en fichier PDF un fichier Microsoft Word (.doc) Rien de plus simple ! Ouvrez votre fichier *.doc avec OpenOffice.org Réglez éventuellement la mise en page par le menu Format / Page... Dès lors, 2 solutions pour transformer en... www.commentcamarche.net/faq/sujet-5731-transformer-un-fichier-word-doc-en-pdf
Transformer un fichier Microsoft Excel (.xls) en PDFTransformer en fichier PDF un fichier Microsoft Excel (.xls) Rien de plus simple ! Ouvrez votre fichier *.xls avec OpenOffice.org Réglez éventuellement la mise en page par le menu Format / Page... Dès lors, 2 solutions pour transformer en... www.commentcamarche.net/faq/sujet-5734-transformer-un-fichier-microsoft-excel-xls-en-pdf
Transformer une photo en dessin avec Gimp 2.4Vous aimeriez transformer vos photos en dessins, nous allons voir ici comment faire avec Gimp Pour notre "dessin", nous allons prendre cette photo : La voici dans la fenêtre de travail de Gimp : Cliquez sur "calques" et ensuite sur... www.commentcamarche.net/faq/sujet-10228-transformer-une-photo-en-dessin-avec-gimp-2-4
[XML/XSLT/JavaScript] problème de transformatBonjour, J'ai quelques problèmes en essayant de transformer mon XML externe via un XSL et d'afficher le résultat dans un bloc (avec la fonction innerHTML). var req; var req2; var xml; var xsl; function affichcat(url) { if... www.commentcamarche.net/forum/affich-2001967-xml-xslt-javascript-probleme-de-transformat
Transformation xml en pdf avec xsl-fo (Résolu)Salut, Je veux faire une application php qui génère des documents xml. A partir de ces documents xml, j'utilise xsl pour créer des documents xsl:fo. A partir de ces documents xsl:fo, j'utilise fop pour générer du pdf . Comment installer l'apache Fop... www.commentcamarche.net/forum/affich-2924722-transformation-xml-en-pdf-avec-xsl-fo
Comment convertir un doc XML en HTML (Résolu)J'aimerai convertir un document XML canonique en un document HTML. Mon cadre de travail est une BD Oracle 8.1.7. Je reprends tous les enregistrement d'une table EMPLOYEE et j'exporte le résultat avec le package standard DBMS_XMLQUERY. Comment dois-je... www.commentcamarche.net/forum/affich-515557-comment-convertir-un-doc-xml-en-html
Télécharger DriveImage XMLDriveImage XML est un programme permettant de faire des images du système (partitions et lecteurs logiques) à des fins de sauvegarde, à la manière de Norton Ghost. Ce programme permet : De créer des images des lecteurs logiques et des... www.commentcamarche.net/telecharger/telecharger-34055109-driveimage-xml
Télécharger Transform XP to VistaSi vous cherchez quelque chose de nouveau pour personnaliser l'interface de votre Windows XP, mais que vous n'avez pas le temps pour des tests. Ce thème est fait pour vous. Transform Xp to Vista est un pack complet pour la personnalisation de votre... www.commentcamarche.net/telecharger/telecharger-34056173-transform-xp-to-vista
Télécharger Waha! Transformer LiteWaha! Transformer Lite est un convertisseur de données. Il permet d’extraire et de convertir n’importe quelle base de données en définissant les paramètres et cela sans programmation. De plus, l’utilisateur pourra créer des tâches... www.commentcamarche.net/telecharger/telecharger-34058120-waha-transformer-lite
Transformers: AutobotsOther Names:Transformers: The Game -- Autobots, The Transformers: The Movie -- The Game: Autobots (2007), Genre:Action, Développeur:Vicarious Visions, Page web du produit:Anglais www.commentcamarche.net/guide/908447-transformers-autobots
Transformers: The GameOther Names:The Transformers: The Movie -- The Game (2007), Genre :Action, Nb. de joueurs hors-ligne:1, Jeu en ligne, Développeur:Savage Entertainment, Divers:Online Play via Infrastructure Mode, Page web du produit:Anglais www.commentcamarche.net/guide/902274-transformers-the-game
Transformers: The GameDéveloppeur:Traveller's Tales, Genre:Action-Aventure, Nb. de joueurs hors-ligne:1, Other Names:The Transformers: The Movie -- The Game (2007) www.commentcamarche.net/guide/902456-transformers-the-game
Mise en page de XML avec XSLIntroduction à XSL XML est un langage de structuration des données, et non de représentation des données. Ainsi XSL (eXtensible StyleSheet Language) est un langage recommandé par le W3C pour effectuer la représentation des données de documents XML.... www.commentcamarche.net/contents/xml/xmlxsl.php3
Les éléments de transformation XSLLes éléments de transformation Les éléments de transformations permettent de sélectionner et effectuer des opérations sur les éléments du document XML. Leur syntaxe est la suivante : Remarquez la présence du / indiquant que... www.commentcamarche.net/contents/xml/xmltransform.php3
Introduction à XMLPrésentation de XML XML (entendez eXtensible Markup Language et traduisez Langage à balises étendu, ou Langage à balises extensible) est en quelque sorte un langage HTML amélioré permettant de définir de nouvelles balises. Il s'agit effectivement... www.commentcamarche.net/contents/xml/xmlintro.php3