Introduction à XSLT

Julien FEASSON

Comme XML est devenu un standard pour le stockage et l’échange de données ont émergé les moyens de transformer des données stockées en XML vers d’autres types de fichiers structurés, ou de simplement présenter les données d’une manière naturelle pour l’utilisateur. Le langage XSLT représente sans doute l’un des moyens les plus puissants pour cela. 4e Dimension 2004 introduit de nouvelles commandes pour appliquer des transformations XSLT aux variables et documents XML. Vous pouvez en outre les appliquer directement depuis le dialogue d’export. Cette note technique présente XSLT, les bases du langage XSLT, les bénéfices à attendre de son utilisation et la manière de l’utiliser depuis une application 4D. Cette note technique suppose que vous avez déjà une compréhension de base de XML et de ses espaces de noms. ♪

- Titre : Introduction à XSLT

- Auteur : Julien FEASSON

- Parution : 24 décembre 2019

- Licence : Ce document est issu de https://www.developpez.com et reste la propriété exclusive de son auteur. La copie, modification et/ou distribution par quelque moyen que ce soit est soumise à l'obtention préalable de l'autorisation de l'auteur.

Sommaire

- I. Introduction

- Exemple

- II. Le langage XSLT

- XSLT dans 4D

- III. XSLT dans le dialogue d’Export

- Scenario

- Exemple

- IV. Les nouvelles commandes XSLT

- APPLIQUER TRANSFORMATION XSLT

- FIXER PARAMETRE XSLT

- LIRE ERREUR XSLT

- V. La base de démo : XSLTDemo

- L’interface

- VI. Conclusion

- VII. Base exemple

I - Introduction

XSL (eXtensible Stylesheet Language) est un standard du W3C (World Wide Web Consortium) développé pour répondre au besoin d’un langage de feuille de style en XML.

XSLT (XSL Transformation) constitue la partie la plus importante des standards XSL, celle qui s’attache à transformer un document XML en n’importe quel type de document basé sur du texte : XML, HTML, fichier csv, PDF, etc.

XSLT peut également ajouter des nouveaux éléments au fichier produit, ou en retirer. Il peut changer l’ordre des éléments et les trier, effectuer des tests et prendre des décisions sur les éléments à afficher et bien davantage.

L’aspect vraiment intéressant de XSLT réside dans la possibilité pour le développeur de conserver la séparation des données et de la présentation, ce qui permet de faire évoluer l’un ou l’autre indépendamment. Des transformations XSLT peuvent être appliquées aux mêmes données et produire des présentations différentes en fonction du fichier XSL et des paramètres utilisés lors de la transformation.

Exemple

Un processeur XSLT est inclus dans la plupart des navigateurs Web.

NDT En réalité ce support est extrêmement variable, Safari 1.2.4 sur OSX ne prend pas en charge les transformations XSL. Internet Explorer et Firefox ou Mozilla diffèrent quant à eux dans le support de XSLT.

Si un navigateur compatible ouvre un document XML où figure une directive pointant vers un document XSL, il cherche alors à charger le document XSL, applique la transformation et affiche le résultat.

Un exemple simple nommé « testbrowser.xml » est fourni avec cette note technique. Vous pouvez l’ouvrir dans un navigateur.

Note : cet exemple peut également être utilisé avec un serveur Web. Le document XML et la feuille de style XSL doivent alors être tous deux accessibles sur le serveur. Comme la transformation est effectuée par le navigateur sur le client, à la fois les données et la feuille de style sont envoyées sur le réseau. Si vous affichez le code source, vous verrez le fichier XML. Pour des raisons de sécurité, si vous ne voulez pas envoyer toutes les données au client, la transformation XSLT peut s’appliquer côté serveur, seul le HTML est alors envoyé au client. Seules les données nécessaires à l’affichage sont incluses dans le document HTML.

NDT En raison de la diversité des prises en charge d’XSLT par les navigateurs, il est conseillé d’opter pour cette dernière approche server-side.

Le serveur Web de 4D empêchait l’utilisation côté client (client-side) avec les navigateurs comme FireFox, Mozilla sur OSX. Ce dysfonctionnement est corrigé dans la version 4D 2004.1.

II - Le langage XSLT

Le langage XSLT comporte un ensemble de fonctions et repose sur la notation XPath.

XSLT dans 4D

XSLT est fourni au développeur 4D par l’intermédiaire d’un ensemble de commandes qui permettent d’appliquer une transformation XSLT sur n’importe quel XML, le résultat pouvant être enregistré sur disque pour un usage ultérieur.

XSLT est également disponible pour les utilisateurs 4D en mode utilisation directe au travers du dialogue d’export. Cela permet à l’utilisateur d’appliquer une transformation XSLT sur les données en cours d’export avant qu’elles ne soient enregistrées sur le disque.

III - XSLT dans le dialogue d’Export

Scenario

Le développeur 4D peut fournir aux utilisateurs finaux un jeu de feuilles de style XSLT. Lorsqu’ils exportent les données, les utilisateurs peuvent sélectionner l’une des feuilles de style et transformer tout ou partie des données vers un fichier XML de structure différente ou vers d’autres formats : HTML, texte, Word 2003, Excel 2003, PDF, etc.

Exemple

Ouvrez la base « ExportUtilisationXSLT » avec 4D 2004. En mode utilisation directe, ouvrez le dialogue d’export et effectuez les opérations suivantes :

- ajoutez tous les champs de la table Data pour l’export ;

- sélectionnez « Enregistrements/Exporter tout » ;

- choisissez XML comme format de fichier d’export ;

- sélectionnez ou entrez le chemin d’accès du fichier d’export ;

- dans l’onglet XML, cochez «Se référer au XSL existant » ;

- sélectionnez le fichier XSL à utiliser : 2003Data.xsl, qui se trouve près du fichier de structure ;

- vérifiez que «Appliquez la transformation XSL»  est sélectionné ;

- cliquez sur « Exporter ».

Figure 1 – Export XML en appliquant une transformation XSLT

La transformation va créer un document HTML listant toutes les données de 2003. Si vous effectuez le même export en sélectionnant le fichier 2004Data.xsl, le document HTML créé ne comprendra que les données de 2004.

Si au lieu d’appliquer la transformation lors de l’export, vous cochez le bouton radio « Insérer un lien vers le fichier XSL », ce sera à l’application XML traitant le XML d’appliquer la transformation XSL sur la structure XML exportée.

Voici le contenu d’une feuille xsl permettant de construire une page HTML ne contenant que les données correspondant à la date d’enregistrement à 2003 dans notre base 4D (fichier « 2003Data.xsl ») :

Ce qui permettra de n’afficher que les enregistrements contenant « 2003 » dans le champ RegistrationDate :

IV - Les nouvelles commandes XSLT

4D 2004 comprend trois nouvelles commandes qui permettent au développeur d’appliquer des transformations XSLT à n’importe quel document ou variable :

- APPLIQUER TRANSFORMATION XSLT

- FIXER PARAMETRE XSLT

- LIRE ERREUR XSLT

APPLIQUER TRANSFORMATION XSLT

La commande APPLIQUER TRANSFORMATION XSLT permet d’appliquer une transformation sur un fichier XML existant ou sur une variable en utilisant une feuille de style XSL existante. Dans les deux cas, XML ou XSL, il peut s’agir de documents ou de variables de type BLOB. Les commandes peuvent générer un document ou un BLOB.

Cette commande peut appliquer la même transformation XSLT à plusieurs fichiers ou variables XML pour donner la même présentation à différents jeux de données.

Des rapports quotidiens peuvent être facilement produits depuis les données stockées dans un document XML. Des transformations XSLT différentes peuvent également être effectuées sur les mêmes données et générer de la sorte des transformations multiples du même jeu de données.

Imaginez par exemple un site Web utilisant des styles ou des habillages par utilisateur, stockés dans les préférences, chacun de ces styles pourrait être appliqué à la page en utilisant une transformation XSLT.

Un autre exemple serait la génération de plusieurs sortes d’états depuis le même jeu de données, par exemple, un rapport Microsoft Word, une feuille Microsoft Excel ou une présentation HTML.

FIXER PARAMETRE XSLT

La commande FIXER PARAMETRE XSLT permet de changer dynamiquement le comportement de la feuille de style. Le langage XSLT accepte des paramètres que les commandes peuvent ensuite utiliser.

Cela peut être par exemple appliqué pour n’afficher que certaines parties des données comprises dans l’XML.

LIRE ERREUR XSLT

La commande LIRE ERREUR XSLT peut s’employer pour récupérer de l’information lorsqu’une erreur survient lors d’une transformation XSLT. Ce message est retourné par le processeur XSLT et peut se révéler utile lors du débogage.

V - La base de démo : XSLTDemo

La base de démo illustre les points décrits ci-dessus au travers du formulaire de sortie de la table Data.

L’interface

L’interface, très basique, affiche en haut de la fenêtre une liste des enregistrements de la base de données. Au bas du formulaire, trois sections différentes sont relatives aux trois types de démonstration :

Figure 2 – Appliquer une transformation par programmation

La première section illustre deux usages simples de la commande APPLIQUER TRANSFORMATION XSLT.

Elle utilise le fichier XML Data.XML et deux fichiers XSL différents : 2003Data.xsl et 2004Data.xsl.

Les boutons appellent deux méthodes projet Apply2003XSLT et Apply2004XSLT. Le code de ces méthodes est simple et exécute la commande APPLIQUER TRANSFORMATION XSLT. Il affiche ensuite le document HTML généré dans le navigateur par défaut en appelant OUVRIR URL WEB.

La deuxième section illustre la manière de passer un paramètre à une feuille de style XSL. Elle montre qu’au lieu d’avoir deux feuilles de styles, comme dans la première partie, nous pouvons recourir à une seule feuille de style qui sélectionnera les données à transformer et afficher en fonction du paramètre passé.

Voici le code de la méthode ApplyParamXSLT :

1. C_TEXTE($1)

2. C_TEXTE($XML_Path;$XSL_Path;$HTML_Path)

4. $XML_Path:="Data.xml"

5. $XSL_Path:="ParamData.xsl"

6. $HTML_Path:="ParamData.html"

8. FIXER PARAMETRE XSLT("Year";$1)

10. APPLIQUER TRANSFORMATION XSLT($XML_Path;$XSL_Path;$HTML_Path)

12. OUVRIR URL WEB($HTML_Path)

La dernière partie montre comment la commande LIRE ERREUR XSLT peut être utilisée. Elle permet d’afficher une alerte lorsqu’une erreur survient.

Un APPELER SUR ERREUR a été placé avant d’exécuter la commande APPLIQUER TRANSFORMATION XSLT et une erreur a été volontairement introduite dans le document XSL.

Lorsque la méthode objet du bouton « Tester la feuille de style XSL » est exécutée, la commande APPLIQUER TRANSFORMATION XSLT génère une erreur, la méthode HandleError est appelée et la commande LIRE ERREUR XSLT retrouve le message d’erreur, la ligne et la colonne d’origine de l’erreur puis un message est affiché dans un dialogue d’alerte.

Comme vous pouvez le constater, appliquer une transformation XSLT dans 4D est facile. Cette commande peut s’utiliser à plusieurs fins, pour le Web, pour exporter des données ou créer des rapports.

Un autre bénéfice réside dans le fait que le fichier XSL peut être modifié sans avoir à recompiler l’application entière afin de prendre en compte la modification. Les formats et les habillages peuvent être instantanément modifiés, mis à jour pour générer des rapports ou des pages HTML.

VI - Conclusion

4D 2004 propose une prise en charge aisée du standard XML. Les données XML peuvent ainsi être utilisées pour bien d’autres choses que la sauvegarde de préférences ou le transfert de données vers une autre application. Par exemple, pour de la présentation et de la génération d’états. Cela permet également d’intégrer 4D avec de nombreuses applications, car les données XML peuvent maintenant être transformées vers une autre structure.

L’aspect le plus important et le plus grand bénéfice de XSLT résident dans la séparation entre les données et la présentation, permettant de les maintenir séparément. En d’autres termes, le développeur peut modifier le fichier XSL et ainsi la présentation sans avoir à recompiler la base de données.

Pour plus d’information sur XSLT, vous pouvez visiter :

http://www.w3c.org/Style/XSL/

VII - Base exemple

Téléchargez la base exemple :

base exemple