TUTORIELS 
Rendre un fichier RSS lisible avec XSL (1)
Bien maîtrisé, XSL permet de tout faire à partir d'un fichier de type XML. Démonstration en deux parties, avec pour commencer l'affichage d'un message...  (30 septembre 2003)
 
Discutez en sur les forums
D'abord format de base des weblogues pour la syndication de leur contenu, le format RSS a maintenant été adopté par les grands médias pour la même raison (New-York Times, BBC, Yahoo!...) : l'utilisateur ne risque jamais de recevoir de spam, au contraire d'un abonné à une newsletter, et il peut facilement s'abonner/se désabonner d'un flux précis(pour autant qu'il dispose d'un aggrégateur).
Mais justement, si l'utilisateur lambda d'un site clique sur le lien du fichier RSS d'un site, il sera le plus souvent bien en mal de comprendre ce qu'il doit faire de ces informations : les navigateurs modernes, IE6 et Mozilla en tête, affiche directement les fichiers comme le contenu XML qu'ils sont, et bien malin celui qui comprendra ce qu'il faut faire ensuite...


La solution est simple : faire appel à XSL pour ajouter du "style" aux balises XML, voire mieux : afficher un message en lieu et place du flux RSS. C'est ce que nous allons faire ici.

Démonstration
Partons du principe que votre site offre un flux RSS 2.0. Il aura la forme suivante s'il était affiché directement à votre visiteur.

<?xml version="1.0" encoding="iso-8859-1"?>
  <rss version="2.0">
    <channel>
       <title>Nouvelles de mon site</title>
       <link>http://www.monsite.com/</link>
       <description>Mon Site - ma vie, mon oeuvre</description>
       <language>fr</language>
       <item>
          <title>Le dernier article en date...</title>
          <description>
             Encore plus de choses passionnantes.
          </description>
          <guid>
             http://www.monsite.com/2003/09/26/encore_un_scoop
          </guid>
       </item>
       <item>
          <title>L'avant-dernier article en date...</title>
          <description>
             Plein de choses passionnantes.
          </description>
         <guid>
            http://www.monsite.com/2003/09/25/un_scoop
          </guid>
       </item>
    </channel>
  </rss>

L'astuce consiste donc à créer le feuille de style qui viendra manipuler ce fichier directement dans le navigateur. Commençons par indiquer l'existence de cette feuille.

<?xml version="1.0" encoding="iso-8859-1"?>
<?xml-stylesheet type="text/xsl" href="rss.xsl" ?>
  <rss version="2.0">
    <channel>
[le reste du fichier reste inchangé]

Voyons maintenant la forme que prendra notre feuille XSL si l'on veut simplement remplacer le contenu RSS par un texte lisible pour le visiteur.

<?xml version="1.0" encoding="iso-8859-1"?>
  <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
    <xsl:output method="html"/>
    <xsl:template match="/developpeur/">
      <html xml:lang="fr">
        <head>
          <title>MonSite.com</title>
          <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
        </head>
        <body>
Ce fichier RSS n'est pas lisible dans un navigateur.<br /> Pour pouvoir vous abonner au flux RSS de notre site, et ainsi être tenu au courant de nos nouveautés dès qu'elles sont publiées, vous devez télécharger un aggregateur, tel que <a href="http://www.bradsoft.com/feeddemon/beta/" title="FeedDemon">FeedDemon</a>.
        </body>
      </html>
    </xsl:template>
  </xsl:stylesheet>

Le déroulement est ici assez simple :
- L'élément <xsl:output> permet de définir le type du document résultant. En précisant que nous voulons utiliser la méthode de sortie "html", nous indiquons au processeur XSL qu'il doit adapter son format au type de fichier.
- <xsl:template> sert à gérer les modèles. Ici, avec match="/", nous spécifions que le modèle qui va suivre va simplement remplacer notre document XML.
- Suit le fichier HTML que nous voulons envoyer au visiteur, au complet (balises HEAD et TITLE incluses).
- Enfin, on ferme template et stylesheet.

Nous verrons ensuite comment faire croire au visiteur qu'il visite une véritable page HTML, l'affichage et les liens étant gérés par XSL.

 
[ Xavier BorderieJDNet
 
Accueil | Haut de page