Developpez.com - 4D
X

Choisissez d'abord la catégorieensuite la rubrique :


Introduction à XSLT

Par Julien FEASSON (4D Inc.)
 

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. 4ème 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 d'XML et de ses espaces de noms.

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 d'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.

info 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 d'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.

info 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 l'HTML est alors envoyé au client. Seules les données nécessaires à l'affichage sont incluses dans le document HTML.
info 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 ».
Pictures 0552x0394
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 contruire une page HTML ne contenant que les données correspondant à la date d'enregistrement à 2003 dans notre base 4D (fichier "2003Data.xsl") :

Pictures 0619x0498



Ce qui permettra de n'afficher que les enregistrements contenant "2003" dans le champ RegistrationDate :

Pictures 0355x0189

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 appliquer 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 enregistrement de la base de données. Au bas du formulaire, trois sections différentes sont relatives aux trois types de démonstration :

Pictures 0476x0464
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 :

    C_TEXTE($1)
    C_TEXTE($XML_Path;$XSL_Path;$HTML_Path)

    $XML_Path:="Data.xml"
    $XSL_Path:="ParamData.xsl"
    $HTML_Path:="ParamData.html"

    FIXER PARAMETRE XSLT("Year";$1)

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

    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 d'XSLT réside 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 :



VII. Base exemple

Téléchargez la base exemple :

base exemple

__________________________________________________
Copyright © 1985-2009 4D SA - Tous droits réservés
Tous les efforts ont été faits pour que le contenu de cette note technique présente le maximum de fiabilité possible.
Néanmoins, les différents éléments composant cette note technique, et le cas échéant, le code, sont fournis sans garantie d'aucune sorte. L'auteur et 4D S.A. déclinent donc toute responsabilité quant à l'utilisation qui pourrait être faite de ces éléments, tant à l'égard de leurs utilisateurs que des tiers.
Les informations contenues dans ce document peuvent faire l'objet de modifications sans préavis et ne sauraient en aucune manière engager 4D SA. La fourniture du logiciel décrit dans ce document est régie par un octroi de licence dont les termes sont précisés par ailleurs dans la licence électronique figurant sur le support du Logiciel et de la Documentation afférente. Le logiciel et sa documentation ne peuvent être utilisés, copiés ou reproduits sur quelque support que ce soit et de quelque manière que ce soit, que conformément aux termes de cette licence.
Aucune partie de ce document ne peut être reproduite ou recopiée de quelque manière que ce soit, électronique ou mécanique, y compris par photocopie, enregistrement, archivage ou tout autre procédé de stockage, de traitement et de récupération d'informations, pour d'autres buts que l'usage personnel de l'acheteur, et ce exclusivement aux conditions contractuelles, sans la permission explicite de 4D SA.
4D, 4D Calc, 4D Draw, 4D Write, 4D Insider, 4ème Dimension ®, 4D Server, 4D Compiler ainsi que les logos 4e Dimension, sont des marques enregistrées de 4D SA.
Windows,Windows NT,Win 32s et Microsoft sont des marques enregistrées de Microsoft Corporation.
Apple, Macintosh, Power Macintosh, LaserWriter, ImageWriter, QuickTime sont des marques enregistrées ou des noms commerciaux de Apple Computer,Inc.
Mac2Win Software Copyright © 1990-2002 est un produit de Altura Software,Inc.
4D Write contient des éléments de "MacLink Plus file translation", un produit de DataViz, Inc,55 Corporate drive,Trumbull,CT,USA.
XTND Copyright 1992-2002 © 4D SA. Tous droits réservés.
XTND Technology Copyright 1989-2002 © Claris Corporation.. Tous droits réservés ACROBAT © Copyright 1987-2002, Secret Commercial Adobe Systems Inc.Tous droits réservés. ACROBAT est une marque enregistrée d'Adobe Systems Inc.
Tous les autres noms de produits ou appellations sont des marques déposées ou des noms commerciaux appartenant à leurs propriétaires respectifs.
__________________________________________________
 



Valid XHTML 1.1!Valid CSS!

Ce document est issu de http://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.
Contacter le responsable de la rubrique 4D