SELFHTML

Exemples pour XSLT

Page d'information: vue d'ensemble

vers le bas Remarques sur les exemples
vers le bas Premier exemple: un salut
vers le bas Deuxième exemple: texte avec formatages
vers le bas Troisième exemple: texte avec des liens (graphiques et multimédia)
vers le bas Quatrième exemple: un glossaire en tant que tableau

 vers le bas 

Remarques sur les exemples

Pour se familiariser avec la terminologie de XSLT, il est recommandé de travailler tous les exemples de cette page et de les comprendre.

Les exemples recouvrent quelques unes des possibilités typiques d'utilisation de XSLT. Ils n'épuisent cependant pas les possibilités du langage. XSLT est lui-même un langage conforme à XML et se compose de certains éléments et attributs. Vous trouverez une vue d'ensemble systématique à ce sujet dans la partie Autre page d'information  Éléments XSLT.

L'Explorer Internet Microsoft 5.x a suivant sa version des problèmes avec ces exemples. La raison en est qu'il a été livré - et l'est en partie toujours - avec un analyseur syntaxique périmé. Cet analyseur syntaxique interprète XSLT en se fondant sur une ancienne mouture (Working Draft) du consortium W3 qui entre-temps est depuis longtemps dépassée pour être remplacée par la recommandation XSLT-1.0-. De cette façon malencontreuse et par la propagation de l'Explorer Internet Microsoft des millions de copies d'un analyseur syntaxique XSLT absolument inutilisable courent le monde. Bien que Microsoft propose depuis longtemps des mises à jour de cet outil inutile, il est inévitable que de nombreux utilisateurs possèdent un Explorer Internet Microsoft qui interprète très incomplètement et par des détours incertains les transcriptions XSLT. C'est pourquoi l'emploi judicieux de XSLT n'est vraiment possible que côté serveur. Vous pouvez lire des détails sur l'implémentation de XSLT de l'Explorer Internet sur la toile sur la page Page en langue anglaise Unofficial MSXML XSLT FAQ.

Dans les exemples de cette page et des pages suivantes, il n'a pas été tenu compte de l'ancienne implémentation de l'Explorer Internet. XSLT est écrit comme il doit être employé aujourd'hui. Pour retracer les exemples, il y a aujourd'hui des utilitaires logiciels comme Saxon ou Xt. Dans l'index des liens de l'offre en ligne de SELFHTML actuel, vous trouverez des liens à ces Autre page d'information Index des liens: logiciels XML.

À titre d'exemple, le travail avec Saxon est décrit. Ce programme est un pur analyseur syntaxique XSLT qui à partir d'un fichier XML et d'une feuille de style XSLT, crée un fichier de sortie sur la base des définitions XSLT. Saxon est purement orienté "ligne d'invite de commande" (pour les utilisateurs de Windows existe une version qui peut tourner dans une fenêtre DOS). C'est ce qui permet à Saxon d'être également particulièrement bien approprié pour être exécuté par exemple à partir de Chapitre: vue d'ensemble scripts CGI, qui veulent envoyer des données XML sous forme HTML à un serveur qui les appelle.

Un appel simple de Saxon pourrait s'intituler:
saxon mesdonnees.xml moi.xsl >sortie.html

Dans cette commande mesdonnees.xml est un fichier avec une structure de données XML. Le fichier moi.xsl contient les définitions XSLT, sur la façon dont les structures de données XML de données XML comme celles de mesdonnees.xml doivent être transcrites en HTML. sortie.html est le nom du fichier HTML qui doit être créé à partir des données de sortie XML et des définitions de transcription en HTML.

Même en relation avec des scripts Autre page d'information CGI on peut se servir de façon optimale d'un programme comme Saxon. Si vous vous intéressez à CGI et à Perl vous trouverez dans la partie sur Autre page d'information qx(...) - exécuter d'autres programmes et scripts et capturer STDOUT, un exemple commenté sur la façon dont vous pouvez envoyer des données XML sauvegardées côté serveur en tant que code HTML au navigateur qui les appelle à l'aide de Saxon et de Perl.

Les exemples de cette page et des pages suivantes ont été transcrits de cette façon de XML en HTML. Les données HTML qui en résultent peuvent être appelés comme exemples d'affichage. De même les fichiers XML peuvent être appelés.

 vers le hautvers le bas 

XML1.0 Premier exemple: un salut

Le premier exemple montre le cas le plus simple possible: il y a une DTD dans laquelle seul un élément est défini. Le fichier d'application XML est simple en conséquence. Un fichier XSL qui contient les instructions XSLT assure la transformation en HTML.

Démonstration - nouvelle fenêtre Exemple d'affichage: aperçu (fichier de résultat bonjour.htm)
Démonstration - nouvelle fenêtre Exemple d'affichage: aperçu (Fichier bonjour.xml - navigateur XML/XSLT indispensable)

Exemple de DTD bonjour.dtd:

<!ELEMENT salut (#PCDATA)>

Exemple d'une application valide bonjour.xml:

<?xml version="1.0" encoding="ISO-8859-1"?>
<!DOCTYPE salut SYSTEM "bonjour.dtd">
<?xml-stylesheet type="text/xsl" href="bonjour.xsl" ?>

<salut>hello monde!</salut>

Exemple du fichier XSL incorporé bonjour.xsl:

<?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="/">
 <html><head></head><body>
 <p align="center" style="font-family:Tahoma; font-size:48pt; color:red">
  <xsl:value-of select="." />
 </p>
 </body></html>
</xsl:template>

</xsl:stylesheet>

Explication:

Dans l'exemple de DTD, sauvegardée séparément dans un fichier nommé bonjour.dtd, est défini le seul élément du petit exemple à savoir l'élément document salut. Vous trouverez des détails pour ce genre de définitions d'élément dans la partie sur les Autre page d'information Éléments et règles d'imbrication.

Dans le fichier d'application XML bonjour.xml, il est fait référence dans une Autre page d'information déclaration de type de document avec DTD externe à la DTD établie précédemment. Tout de suite à la suite de la déclaration de type de document, encore avant les données d'utilisation proprement dites du fichier, suit une instruction à l'aide de laquelle le fichier XSL est incorporé:
<?xml-stylesheet type="text/xsl" href="bonjour.xsl" ?>

Il s'agit d'une Autre page d'information instruction de traitement dans le fichier XML au logiciel de traitement. Grâce à la notation xml-stylesheet le logiciel de traitement sait que les attributs qui suivent incorporent un fichier de feuilles de style séparé. Avec l'attribut href le fichier est référencé. L'attribut type est tout aussi important. Lors de l'utilisation de XSL l'analyseur syntaxique XML attend pour cette attribut, la valeur text/xsl.

La constriction du fichier XSL est maintenant intéressante, dans l'exemple, c'est le fichier bonjour.xsl. Les fichiers de feuilles de style XSL reçoivent habituellement l'extension .xsl. Étant donné qu'il s'agit également pour les fichiers XSL de fichiers XML conformes, le fichier commence comme d'habitude par une déclaration XML (dans l'exemple: <?xml version="1.0" encoding="ISO-8859-1"?>).

Tout le contenu du fichier XSL est inclus dans <xsl:stylesheet...>...</xsl:stylesheet>. La notation avec deux points est la notation typique quand dans le fichier d'autres Autre page d'information espaces de nommage XML sont employés. Dans le repère d'ouverture sont mentionnés quels espaces de nommage sont employés. Il faut mentionner dans tous les cas, l'espace de nommage de XSL. Pour ce faire, il vous faut mentionner http://www.w3.org/1999/XSL/Transform comme espace de nommage. L'analyseur syntaxique plus ancien de l'Explorer Internet Microsoft ne peut pas ensuite traiter librement les données. Les analyseurs syntaxiques plus modernes par contre attendent cette mention.
Avec un deuxième attribut xmlns dans le repère d'ouverture <xsl:stylesheet> vous pouvez en outre mentionner l'espace de nommage du langage désiré pour le résultat. Dans l'exemple ci-dessus, il n'en a pas été fait usage. Si toutefois vous avez besoin comme résultat d'un document conforme à XML, vous devez mentionner son espace de nommage. Avec une mention telle que xmlns="http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd" vous mentionnez par exemple l'espace de nommage de XHTML 1.0 dans la variante "Transitional".

Tous les repères d'ouverture et de fermeture à l'intérieur de <xsl:stylesheet...>...</xsl:stylesheet>, qui font partie de l'espace de nommage de XSL, sont reconnaissables à la notation <xsl:...>...</xsl:...>. L'espace de nommage avec lequel XSL est incorporé ne doit d'ailleurs pas s'appeler obligatoirement xsl, pourtant ce nom s'est instauré dans les habitudes de façon compréhensible.

L'exemple ci-dessus continue avec <xsl:template match="/"> (anglais template = français modèle). xsl:template reçoit toujours dans son repère d'ouverture un attribut du nom de match= pour lequel vous mentionnez quel élément de vos données XML doit être transformé. Avec la mention match="/" vous vous référez à la racine du document des données XML, représenté par l'élément salut, utilisé dans la paire de repères <salut>...</salut>.

Après que vous avez choisi avec match= à quel élément XML vous vous référez pour la définition Template qui suit, vous pouvez notez, comme contenu de l'élément xsl:template comment l'élément XML choisi doit être remplacé. Étant donné qu'il doit être transformé en HTML, est donc noté comme contenu de xsl:template le code HTML désiré. Dans l'exemple ci-dessus, c'est un petit fichier HTML complet. La raison en est qu'avec match="/", c'est la racine du document des données XML qui a été choisie. Étant donné que le résultat attendu est un fichier HTML complet, la racine du document des données XML est transformée en une ossature typique de fichier HTML.

Dans le code HTML, il faut que le contenu de <salut>...</salut> soit sorti à l'endroit désiré - dans l'exemple entre <body> et </body> dans un paragraphe <p>...</p>. C'est à cela que sert, dans les feuilles de style la commande <xsl:value-of select="." /> (anglais value-of = français valeur de). La mention select="." veut dire quelque chose comme "choisis le contenu complet de l'élément actuel". Afin que la sortie HTML ait l'air un peu plus avenante le repère d'ouverture <p> contient des mentions de formatage. Même les mentions CSS sont permises comme vous pouvez le voir dans l'exemple. Lors de la transformation et à l'endroit correspondant, le code HTML suivant est créé:
<p align="center" style="font-family:Tahoma; font-size:48pt; color:red">
hello monde!
</p>

 vers le hautvers le bas 

XML1.0 Deuxième exemple: texte avec formatages

L' vers le haut exemple de salut a une structure XML rigide. D'après la définition de la DTD, <salut>...</salut> ne peut y être noté exactement qu'une seule fois avec un texte de salutation comme contenu. L'exemple suivant montre une structure de données dans laquelle il y a un élément qui peut revenir aussi souvent que souhaité et qui peut encore contenir d'autres éléments intérieurs. L'exemple concerne un fichier de nouveautés dans lequel sont rassemblés des messages sur les nouveaux produits sur le marché des logiciels.
Les mentions XSLT pour la transformation en HTML doivent être construites un peu différemment dans cet exemple plus complexe.

Démonstration - nouvelle fenêtre Exemple d'affichage: aperçu (fichier de résultat produktnews.htm)
Démonstration - nouvelle fenêtre Exemple d'affichage: aperçu (fichier produktnews.xml - navigateur XML/XSLT indispensable)

Exemple de DTD produktnews.dtd:

<!ELEMENT nouveautes (#PCDATA | description)*>
<!ELEMENT description (#PCDATA | fabricant | produit | prix)*>
<!ELEMENT fabricant (#PCDATA)>
<!ELEMENT produit (#PCDATA)>
<!ELEMENT prix (#PCDATA)>

Exemple d'une application valide produktnews.xml:

<?xml version="1.0" encoding="ISO-8859-1"?>
<!DOCTYPE nouveautes SYSTEM "produktnews.dtd">
<?xml-stylesheet type="text/xsl" href="produktnews.xsl" ?>
<nouveautes>

Les derniers messages de nouveaut�s:

<description>
La firme  <fabricant>Logimages</fabricant> a sorti une nouvelle version du jeu populaire
de ballon <produit>Manette chaude</produit>.
D'apr�s les renseignements fournis par le constructeur, la nouvelle version qui fonctionne aussi sous le syst�me d'exploitation <produit>sans plantage</produit> devrait co�ter aux alentours de <prix>80 Euros</prix>.
</description>

<description>
Il existe maintenant une rustine de <fabricant>Logicycles SARL</fabricant> pour le CD ROM de collection
<produit>Floril�ge d'id�es d'autrui</produit>. Il �tait de notori�t� publique que quelques uns des mod�les de pages Web sensationnelles
contenaient encore par erreur des mentions des auteurs originaux. La rustine est maintenant offerte pour le prix ridicule de
<prix>200 Euros</prix>.
</description>

</nouveautes>

Exemple du fichier XSL incorporé produktnews.xsl:

<?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="/">
 <html><head></head><body style="font-family:Verdana; font-size:18pt; color:green">
  <xsl:apply-templates />
 </body></html>
</xsl:template>

<xsl:template match="description">
 <p style="font-family:Verdana; font-size:10pt; color:black">
   <xsl:apply-templates />
 </p>
</xsl:template>

<xsl:template match="fabricant">
 <span style="font-weight:bold; color:red"><xsl:value-of select="." /></span>
</xsl:template>

<xsl:template match="produit">
 <span style="font-weight:bold; color:blue"><xsl:value-of select="." /></span>
</xsl:template>

<xsl:template match="prix">
 <b><xsl:value-of select="." /></b>
</xsl:template>

</xsl:stylesheet>

Explication:

L'exemple définit dans la DTD produktnews.dtd les éléments désirés et leurs règles d'imbrication. Dans le fichier d'application produktnews.xml vous voyez un exemple sur la façon de transcrire correctement ces définitions. Vous trouverez des détails sur de telles définitions d'éléments dans les DTD, dans la partie sur les Autre page d'information éléments et règles d'imbrication.

Exactement comme dans l'vers le haut exemple de salut le fichier XSL est à nouveau incorporé dans le fichier XML avec des mentions pour une transformation en HTML. Le fichier XSL qui s'appelle ici produktnews.xsl a aussi l'ossature typique composée par l'élément xsl:stylesheet qui établit la relation avec l'espace de nommage de XSL.

Comme dans l'exemple de salut la racine du document est adressée avec <xsl:template match="/">. Entre ce repère d'ouverture et son pendant </xsl:template> l'ossature HTML pour la transformation est notée. À l'intérieur de <body>...</body> n'est pourtant noté dans cet exemple que l'élément vide <xsl:apply-templates /> (anglais apply-templates = français appliquer les modèles). Avec cette mention, vous indiquez à l'analyseur syntaxique XSLT d'appliquer les modèles notés à l'extérieur de l'élément xsl:template actuel à l'endroit correspondant.
Si dans cet exemple plusieurs définitions de modèles distinctes avec leur propre élément xsl:template sont nécessaires, cela est dû au fait que le contenu qui, dans la sortie HTML, doit suivre entre <body>...</body> n'a pas de construction rigide. Ainsi dans l'élément racine nouveautes peuvent être placés du texte comme la quantité souhaitée d'éléments du type description et de ses éléments-enfants. Vous pouvez donc lire la mention <xsl:apply-templates /> comme voulant dire "fais attention pour les éléments placés dans cet élément aux modèles définis séparément pour eux".

La deuxième définition de modèle de l'exemple commence par <xsl:template match="description">. Vous mentionnez ainsi, pour le code HTML qui suit, qu'il s'applique à tous les contenus du type d'élément description. Dans l'exemple, un paragraphe HTML <p>...</p> avec les formatages souhaités est créé pour chacun de ces éléments. À l'intérieur de cet élément xsl:template seul est noté cette fois encore <xsl:apply-templates /> . La raison en est encore dans ce cas que les éléments du type description peuvent contenir un contenu mixte et d'autres éléments-enfants possibles. Pour ces éléments-enfants des modèles distincts, à nouveau, seront définis dont il sera tenu compte grâce à l'instruction <xsl:apply-templates />.

Pour chacun des types d'éléments-enfants possibles de description, dans l'exemple les types fabricant, produit et prix, des modèles seront définis d'après le même schéma. Étant donné que ces éléments ne peuvent plus eux-mêmes contenir d'autres éléments mais seulement du contenu en caractères (#PCDATA), les mentions pour le formatage HTML se réfèrent simplement à leur contenu. Vous devez référencer le contenu avec <xsl:value-of select="." /> comme dans l'exemple de salut.

 vers le hautvers le bas 

XML1.0 Troisième exemple: texte avec des liens (graphiques et multimédia)

Dans les deux premiers exemples, on n'a travaillé qu'avec des éléments. Dans le cas de liens il faut pourtant accéder à chacun des différents attributs pour créer la sortie HTML, à savoir à l'attribut href de l'élément a. Même ça, c'est possible avec XSLT . C'est exactement la même chose que si vous vouliez incorporer des graphiques ou du multimédia. Alors vous devez par exemple accéder à l'attribut src de l'élément img ou bien à l'attribut data de l'élément object. C'est ce que démontre l'exemple suivant avec des liens.

Démonstration - nouvelle fenêtre Exemple d'affichage: aperçu (fichier de résultat linktext.htm)
Démonstration - nouvelle fenêtre Exemple d'affichage: aperçu (fichier linktext.xml - navigateur XML/XSLT indispensable)

Exemple de DTD linktext.dtd:

<!ELEMENT texte_lien (#PCDATA | link)*>
<!ELEMENT link (#PCDATA)>

Exemple d'une application valide linktext.xml:

<?xml version="1.0" encoding="ISO-8859-1"?>
<!DOCTYPE texte_lien SYSTEM "linktext.dtd">
<?xml-stylesheet type="text/xsl" href="linktext.xsl" ?>
<texte_lien>
La page d'accueil du consortium W3 sur XSL est � l'adresse suivante <link>http://www.w3.org/Style/XSL/</link> pour ceux que ça int�resse.
</texte_lien>

Exemple du fichier XSL incorporé linktext.xsl:

<?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="/">
 <html><head></head><body bgcolor="#FFFFFF" text="#000000" link="#FF0000" vlink="#AA0000" alink="#000000" style="font-family:Arial; font-size:10pt;">
  <xsl:apply-templates />
 </body></html>
</xsl:template>

<xsl:template match="link">
 <a><xsl:attribute name="href"><xsl:value-of select="." /></xsl:attribute>
 <xsl:value-of select="." /></a>
</xsl:template>

</xsl:stylesheet>

Explication:

L'exemple définit dans la DTD linktext.dtd les éléments désirés et leurs règles d'imbrication. Dans le fichier d'application linktext.xml vous voyez un exemple sur la façon de transcrire correctement ces définitions. Vous trouverez des détails sur de telles définitions d'éléments dans les DTD, dans la partie sur les Autre page d'information éléments et règles d'imbrication..

Exactement comme dans l'vers le haut exemple de salut le fichier XSL est à nouveau incorporé dans le fichier XML avec des mentions pour une transformation en HTML. Le fichier XSL qui s'appelle ici linktext.xsl - a aussi l'ossature typique.

Comme dans l'vers le haut exemple de texte l'élément document texte_lien de cet exemple peut avoir un contenu mixte composé de texte et d'un élément-enfant possible link. Lors de la construction de la sortie HTML n'a été noté pour cette raison entre <body>...</body> que l'élément vide <xsl:apply-templates />. Le code HTML pour l'élément-enfant possible HTML est défini dans un modèle distinct qui commence avec <xsl:template match="link">.

Dans ce modèle, vous pouvez reconnaître comment on accède à des attributs distincts. Car pour créer à partir de <link>http://www.w3.org/Style/XSL/</link> une sortie HTML pouvant être cliquée comme <a href="http://www.w3.org/Style/XSL/">http://www.w3.org/Style/XSL/</a>, le contenu de l'élément link doit être sorti deux fois: une fois comme attribution de valeur à l'attribut href et une fois comme contenu de l'élément a.
Pour ce faire, notez pour le code HTML qui doit être créé, une première fois seulement le repère d'ouverture sans attribut dans l'exemple du lien donc seulement <a>. Notez ensuite <xsl:attribute name="href">. L'analyseur syntaxique XSLT sait alors que l'attribut ainsi adressé href se réfère à l'élément HTML noté auparavant. Le contenu entre ce repère d'ouverture et son pendant </xsl:attribute> est la valeur que vous désirez affecter à l'attribut. Dans l'exemple ci-dessus ce doit être le contenu placé entre <link> et </link>. Ce contenu peut être référencé avec l'instruction déjà connue <xsl:value-of select="." /> . Ainsi le contenu de caractères de l'élément XML aboutit dans l'affectation de valeur de l'attribut HTML.

En même temps, le contenu de <link>...</link> doit également apparaître en HTML comme contenu de <a...>...</a>. Il est donc également noté encore une fois <xsl:value-of select="." /> à l'intérieur du modèle pour l'élément link.

Attention:

Pour les graphiques et le multimédia, procédez de façon analogue. À supposer que figure dans les données XML:
<image>images/titre.gif</image>
Ensuite vous pouvez en XSL le transcrire comme suit en HTML:
<xsl:template match="image">
<img><xsl:attribute name="src"><xsl:value-of select="." /></xsl:attribute></img>
</xsl:template>

Important: Vous devez dans ce cas noter l'élément img de HTML avec repère d'ouverture et de fermeture sans rien entre. Autrement les analyseurs syntaxiques XSLT produisent en règle générale des erreurs.

 vers le hautvers le bas 

XML1.0 Quatrième exemple: un glossaire en tant que tableau

Un glossaire est un document typique avec une structure simple qui se répète. Il est constitué de termes et de leur définition correspondante. Chacun des termes avec sa définition représente un élément du glossaire. Lors de la transformation de ces données XML en HTML, le glossaire doit être formaté comme un tableau en deux colonnes. Dans la colonne de gauche, les termes et dans la colonne de droite les définitions correspondantes.

Démonstration - nouvelle fenêtre Exemple d'affichage: aperçu (fichier de résultat glossaire.htm)
Démonstration - nouvelle fenêtre Exemple d'affichage: aperçu (fichier glossaire.xml - navigateur XML/XSLT indispensable)

Exemple de DTD glossaire.dtd:

<!ELEMENT glossaire     (element)*>
<!ELEMENT element     (terme,definition)>
<!ELEMENT terme     (#PCDATA)>
<!ELEMENT definition  (#PCDATA)>

Exemple d'une application valide glossaire.xml:

<?xml version="1.0" encoding="ISO-8859-1"?>
<!DOCTYPE glossaire SYSTEM "glossaire.dtd">
<?xml-stylesheet type="text/xsl" href="glossaire.xsl" ?>
<glossaire>
 <element>
    <terme>Avatar</terme>
   <definition>
    d�signe dans la mythologie un dieu qui se prom�ne sur terre. Dans le jargon de la toile, c'est un personnage graphique imaginaire qui prend part avec un participant au clavardage, � des jeux de r�les etc....
    </definition>
 </element>
 <element>
    <terme>Award</terme>
   <definition>
    Sur la toile, une distinction pour des pages Web particuli�rement bien faites. La prolif�ration de donateurs de distinctions autoproclam�s  qui ne visent qu'� attirer des visiteurs sur leurs propres pages, ont beaucoup nui � la notion de distinction sur le Web.
    </definition>
 </element>
</glossaire>

Exemple du fichier XSL incorporé glossaire.xls:

<?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="/">
 <html>
 <head>
 </head>
 <body>
 <table border="1">
 <tr>
  <td><b>terme</b></td>
  <td><b>Definition</b></td>
 </tr>
 <xsl:for-each select="glossaire/element">
 <tr>
  <td valign="top"><xsl:value-of select="terme" /></td>
  <td valign="top"><xsl:value-of select="definition" /></td>
 </tr>
 </xsl:for-each>
 </table>
 </body>
 </html>
 </xsl:template>

</xsl:stylesheet>

Explication:

L'exemple définit dans la DTD glossaire.dtd les éléments désirés et leurs règles d'imbrication. Dans le fichier d'application glossaire.xml vous voyez un exemple sur la façon de transcrire correctement ces définitions. Vous trouverez des détails sur de telles définitions d'éléments dans les DTD, dans la partie sur les Autre page d'information éléments et règles d'imbrication..

Exactement comme dans l'vers le haut exemple de salut le fichier XSL est à nouveau incorporé dans le fichier XML avec des mentions pour une transformation en HTML. Le fichier XSL qui s'appelle ici glossaire.xsl - a aussi l'ossature typique .

Étant donné que le glossaire a une construction rigide, composée d'un contenu d'élément fixe dans un ordre fixe, il est possible de créer toute la sortie HTML désirée un peu comme dans l'exemple de salut avec un seul élément xsl:template. Il y a pourtant une différence importante avec l'exemple de salut: Alors que l'exemple de salut ne pouvait être noté qu'une fois, le glossaire peut comporter d'après les définitions de la DTD, autant d'éléments qu'on le souhaite. Ceux-ci sont toutefois construits de manière uniforme.

Ils existe pour ces cas-là l'instruction de boucle xsl:for-each (anglais for-each = français pour chacun(e)). Il en a été fait usage dans l'exemple ci-dessus à l'endroit où elle doit créer un effet de répétition dans le code HTML. Les données HTML doivent être sorties sous forme de tableau HTML, donc on a créé avec <table...>...</table> un tableau correspondant. Dans la boucle introduite par <xsl:for-each select="glossaire/element">, une rangée de tableau est construite. Ce qui induit que lors de la création de la sortie HTML autant de rangées de tableau que le glossaire contient d'éléments seront créées. À l'intérieur de la boucle il est fait référence pour le contenu de <tr>...</tr> et grâce à l'instruction déjà rencontrée <xsl:value-of select="." /> au contenu des éléments terme et definition actuels à chacune des différentes boucles.

En outre, ce qui est nouveau dans l'exemple du glossaire c'est l'adressage select="glossaire/element" pour l'élément xsl:for-each. Le nom de chemin de l'élément pour lequel la boucle doit être répétée, doit être mentionné. Le nom de chemin commence avec l'élément document, donc avec glossaire. La répétition est souhaitée pour l'élément element qui est un élément-enfant de glossaire. Ces hiérarchies sont notées exactement comme des noms de répertoires dans des URI, donc séparées par des barres obliques. Les règles pour ces noms de chemins sont régis par le langage Autre page d'information  XPath.

 vers le haut
page suivante Autre page d'information Éléments XSLT
page précédente Autre page d'information Bases de XSL/XSLT
 

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