SELFHTML

Bases de XSL/XSLT

Page d'information: vue d'ensemble

vers le bas XSL et XSLT
vers le bas Transformation avec XSLT
vers le bas XSLT dans le navigateur et sur le serveur

 vers le bas 

XSL et XSLT

Le langage XSL (Extensible Stylesheet Language, en français: langage de format extensible) comprend deux composants importants:
1. Un composant pour le formatage de données XML (souvent appelé XSL-FO - "XSL Formatting Objects" ), et
2. un composant pour la transformation de données XML en autres données XML.
Pour le composant pour la transformation, l'abréviation XSLT (XSL Transformation, en français: transformation XML) s'est imposée.

Les abréviations XSL et XSLT portent à confusion, surtout quand on consulte à ce sujet les pages du consortium W3. Il y a là des spécifications séparées pour XSL et XSLT, complétées par une autre spécification importante, à savoir celle sur le langage XPath. XPath agit à l'intérieur de XSLT comme un sous langage. Mais pourquoi donc il ne pourrait pas y avoir tout simplement un langage de formatage pour les données XML? La raison en est avant tout que le composant de transformation XSLT est si puissant qu'il a développé une vie propre. Ne vous laissez pas troubler. Dans la pratique actuelle, vous utilisez XSL avant tout, en utilisant le composant de transformation XSLT.

XSL a été créé comme langage de feuilles de style général pour les données XML. La tâche essentielle de XSL est donc en fin de compte de formater les données XML. On exige naturellement beaucoup d'un tel langage, étant donné que les données XML peuvent être de natures diverses. Tandis que les CSS sont fort centrées sur le domaine de HTML et la représentation de pages Web, les possibilités de formatage de XSL ont tendance à être plus orientées vers les exigences des publications imprimées. Pour cela XSL net un peu comme les CSS un grand éventail de propriétés de style et contient en plus également des possibilités qui contrôlent le déroulement logique de la présentation de données, comme par exemple la numérotation automatique de chapitre ou des fonctions de tri. XSL peut certes être encore largement désigné comme langage de description pour les formats, mais contient en plus également des constructions telles que des instructions conditionnelles ou des instructions pour des boucles qui font davantage penser à des langages de programmation.

Avec le composant de transformation XSLT, XSL dispose pourtant d'une autre possibilité importante: le composant de transformation permet entre autres, de transformer des données XML en HTML. ET c'est exactement là que réside la grande chance pour XML sur le WWW! Car les fournisseurs de projets Web peuvent ainsi sauvegarder proprement leurs données structurées en XML et les présenter malgré tout en HTML, de façon que chaque navigateur puisse afficher les données. Pour cela, toutes les constructions HTML souhaitées sont permises - y compris JavaScript et les CSS. Ainsi il n'est pas rare de voir des situations où aussi bien XSLT que les CSS sont mis en œuvre pour créer avec des données XML des pages Web qui interpellent. Mai les deux langages ont dans cette technique une place bien précise: XSLT sert à générer du code HTML avec des données XML et les CSS sont le langage de formatage pour le produit de la conversion HTML généré par XSLT.

Sur le plan de la publication sur le Web la transformation de définitions XML en code HTML est à l'heure actuelle l'application principale de XSL. C'est pour cette raison que la présente documentation se contente de n'approfondir que XSLT. Il a été renoncé par contre provisoirement d'établir une référence du langage de format XSL proprement-dit.

 vers le hautvers le bas 

Transformation avec XSLT

La partie XSLT de XSL a pour mission de transformer des éléments d'un langage basé sur XML dans un autre langage conforme à XML. Ainsi donc, vous pouvez par exemple transformer des éléments d'un de vos fichiers XML, comme prenom et nom, en constructions de marquage d'un autre langage pour créer une sortie formaté des éléments.

Quand par exemple, vous transformez des données XML en HTML, vous créez une relation entre les éléments et attributs de vos données XML et certaines constructions HTML. Ainsi vous pouvez par exemple mentionner dans la feuille de style XSLT qu'un élément nommé prenom doit être transcrit dans le code HTML en <td>[...]</td>. Si maintenant, vous incorporez la feuille de style XSL dans vos données d'application XML et que vous notez maintenant par exemple <prenom>Stefan</prenom> alors vous obtiendrez comme résultat lors de la transformation, la construction HTML <td>Stefan</td>.

On parle aussi de la transformation de l'arbre des données XML en un arbre de transformation. Derrière figure le fait que toutes les données basées sur XML peuvent être représentées sous forme d'Autre page d'information arborescence. L'illustration suivante met en lumière comment un arbre des données XML devient un arbre de transformation - il ne s'agit bien sûr ici que d'un petit extrait:

arbre des données XML et arbre de transformation

Les traits noirs sur la gauche montrent les correspondances. Le repère <contact> de l'arbre des données XML donne dans l'arbre de transformation HTML le repère <tr>, grâce auquel une ligne de tableau est commencée. Des exigences très variées peuvent être posées à une telle transformation. Vous pouvez reconnaître aux parties soulignées que la transformation est plus compliquée à cet endroit. Là où les adresses pour la page d'accueil et le courriel sont simplement sauvegardées comme texte dans les données XML, la sortie HTML doit sortie un lien pouvant être cliqué. Pour cela, il est nécessaire de noter lors de la transformation que le contenu de l'élément url par exemple dans l'arbre des données XML doit être affecté dans l'arbre de transformation à l'attribut href de l'élément a et qu'il doit ensuite apparaître encore une fois en tant que contenu de l'élément a. Comme vous pouvez le voir à cet exemple, il est souvent nécessaire de cibler précisément l'accès aux différentes parties (nœuds) des données XML, pour placer celles-ci lors de la création de l'arbre de transformation également à des endroits bien précis. Pour cela, vous devez adresser précisément les parties désirées comme "contenu de l'élément url dans l'enregistrement actuel (rechercher le jeu de nœuds - voir aussi Autre page d'information Nœuds et jeux de nœuds dans l'arborescence). Pour cet adressage, XSLT utilise une syntaxe qui est définie dans un langage à part: en XPath. XPath décrit comment accéder aux parties constituant la structure dans les structures de données conformes à XML.

XSL est lui-même un langage de marquage basé sur XML et se compose d'éléments et d'attributs. Pour les employer leur espace de nommage est habituellement importé dans un fichier XML. Le fichier est sauvegardé avec l'extension .xsl. Dans une application XSLT typique, vous devez encore importer outre l'espace de nommage XSL l'espace de nommage du langage dans lequel il doit être transformé. Pour les applications Web, c'est le plus souvent HTML. Un fichier XSLT typique est donc composé d'éléments propres à XSL et d'éléments HTML.

 vers le hautvers le bas 

XSLT dans le navigateur et sur le serveur

XSLT a besoin d'un Autre page d'information analyseur syntaxique, qui exécute les instructions de transformation. Car si vous mentionnez en XSLT que par exemple un élément nommé prenom doit être transcrit en code HTML en <td>[...]</td>, vous notez en XSLT ni plus ni moins qu'un élément correspondant qui représente une instruction de transformation exactement comme si vous notiez des éléments HTML dans un fichier HTML. Pour que ces instructions aient un effet, un analyseur syntaxique doit traiter les instructions comme entrées de données et en créer un résultat qu'il communique au logiciel, par exemple un navigateur, chargé d'afficher les données.

L'analyseur syntaxique XSLT est simplement un module logiciel. La question se pose pourtant de savoir quelle est la meilleure place pour ce module logiciel. Quand la transformation des données XML doit avoir lieu dans une sortie formatée dans le navigateur, alors, le navigateur lui-même doit disposer d'un module correspondant. C'est par exemple le cas pour l'Explorer Internet MS à partir de la version 5.0. Les navigateurs plus anciens ne connaissent cependant pas un tel module et pas d'affichage ou plutôt aucun affichage convenable à l'écran de données XML ne peut se faire.

L'autre possibilité qui est actuellement la plus répandue pour les pages Web sur Internet, est pour cette raison, d'intégrer le module logiciel pour l'analyseur syntaxique XSLT dans le serveur Web. L'avantage en est que les données XML sont transformées en HTML avant même qu'elles ne soient transmises par HTTP au navigateur qui les demande. Cela a l'effet merveilleux que les données XML peuvent être présentées sur chaque navigateur même s'il est ancien ou rudimentaire. Car le navigateur, lorsqu'il réclame les données ne reçoit rien en XML. À la place il ne reçoit du serveur que des données en HTML. Pour Apache, qui est aujourd'hui sur le Web de loin le produit pour serveur le plus répandu, il existe un tel module XSLT nommé Xalan - écrit en Java ou en C++.

Pour les pages Web dynamiques côté serveur, donc par exemple pour des pages crées par un cript CGI, vous avez également tout à fait la possibilité de transformer vos données XML dans le script en constructions HTML. Pour des applications XML simples, coder soi-même les instructions de transcription de XML en HTML ne présente aucun problème. Pour des applications XML plus importantes, il est cependant recommandé de faire appel dans le script à des modules spécialisés pour ce travail de transformation. En Perl, il existe par exemple les modules XML::Parser et XML::Parser::Expat, pour traiter directement des données XML.

 vers le haut
page suivante Autre page d'information Exemples pour XSLT
page précédente Autre page d'information Représentation XML avec des feuilles de style CSS
 

© 2001 Stefan Münz / © 2003 Traduction Adresse électronique Serge François, 13405@free.fr
Adresse électronique selfhtml@fr.selfhtml.org