Easy-Micro

LANGAGE Langage RSS
Blog RSS

Créer son propre blog RSS

XSL Objectif de cet atelier: Créé son propre Blog.

Le webmaster qui veut réaliser un blog sans l'utilisation d'un logiciel cléf-en-main doit prévoir l'utilisation d'au moins trois langages:

• Tous d'abord, le langage RSS qui n'est autre qu'un sous vocabulaire du langage XML (on parle de dialecte XML). RSS est un acronyme pour Really Simple Syndication (syndication vraiment simple). Ce vocabulaire XML est un format de syndication de contenu Web (un échange de contenu). Les balises XML utilisées ici étant toujours les mêmes, cela permet, entre autre, d'appliquer une mise en forme générique sur un fichier RSS sans en connaître le contenu.

• Pour la mise en forme du RSS, on associerra à ce XML un langage de feuilles de style: le XSL (eXtensible Style Sheet Language). Un fichier XSL produit la présentation ou l'affichage du contenu XML selon les souhaits du créateur.

• Enfin, pour faire apparaitre le tout dans une page web, on poura utiliser un langage serveur tel que PHP qui nous permétra de faire apparaitre l'ensemble du fichier RSS. Cette dernière partie faisant l'objet d'un atelier particulier de l'espace membre : Flux RSS.

Voici quelques exemples de fichier RSS mises en forme:
• Avec PHP et XSL: Petit rss Easy-Micro
• Uniquement en XSL: RSS Easy-Micro
• Avec PHP et XSL: Libération (par Pretty-rss)


Rendre un fichier RSS lisible avec XSL
Tous les fichiers RSS doivent être conformes à la spécification XML 1.0, publiée sur le site Web du World Wide Web Consortium (W3C). Au niveau le plus élevé, un document RSS contien un élément <rss>, avec un attribut obligatoire appelé version, qui spécifie la version de RSS à laquelle le document est conforme. S'il est conforme à cette spécification, l'attribut version doit être 2.0. Subordonné à cet élément <rss>, l'élément <channel> qui contient des informations à propos du channel (métadonnées) et de ses contenus. Bien maîtrisé, XSL permet de tout faire à partir d'un fichier de type XML.

Démonstration en quatres parties, avec pour commencer l'affichage d'un message...

La solution : faire appel à XSL pour ajouter du "style" aux balises XML, voire mieux : afficher un message en lieu et place du flux RSS. Nous allons utiliser ici comme base d'exercice un exemple réalisé par Xavier Borderie pour le Journal du Net.
>> voir ici le résultat de ce que nous allons réaliser ci-dessous

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:

- monblog.xml :
<?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/articles/encore_un_scoop.php
</guid>
</item>
<item>
<title>L'avant-dernier article en date...</title>
<description>Plein de choses passionnantes.</description>
<guid>
http://www.monsite.com/articles/un_scoop.php
</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 (voir la ligne 2 ci-dessous).

- monblog.xml :
<?xml version="1.0" encoding="iso-8859-1"?>
<?xml-stylesheet type="text/xsl" href="monstyle.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.

- monstyle.xsl :
<?xml version="1.0" encoding="iso-8859-1"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/TR/WD-xsl">
<xsl:template match="/">
<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. 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 aggr�gateur, tel que FeedDemon.
</body>
</html>
</xsl:template>
</xsl:stylesheet>

Le déroulement est ici assez simple :

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

Voici notre nouveau fichier XSL : monstyle.xsl
(voir le résultat à partir de monblog.xml) :

<?xml version="1.0" encoding="iso-8859-1"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/TR/WD-xsl">
<xsl:template match="/" >
<html xml:lang="fr">
<head>
<title>MonSite.com</title>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
</head>
<body style="background-color:#ffffee">
<xsl:for-each select="rss/channel">
<h2><xsl:value-of select="title"/></h2>
<p><xsl:value-of select="description"/></p>
</xsl:for-each>
<ul>
<xsl:for-each select="rss/channel/item">
<li><a target="_blank">
<xsl:attribute name="href"><xsl:value-of select="guid"/></xsl:attribute>
<xsl:attribute name="title"><xsl:value-of select="description"/></xsl:attribute>
<xsl:value-of select="title"/></a></li>
</xsl:for-each>
</ul>
<hr color="#c0c0c0" width="450" align="left"/>
<table border="0" cellpadding="0" cellspacing="0" width="450"><tr><td>
Ce fichier RSS n'est pas lisible dans un navigateur. 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 aggr�gateur, tel que FeedDemon.</td></tr></table> </body>
</html>
</xsl:template>
</xsl:stylesheet>

Le code XSL n'est pas trop difficile à comprendre : une boucle for-each applique son contenu à tous les éléments channel du fichier RSS. On extrait l'élément title pour en faire un titre, l'élément description pour en faire un chapeau sous le titre, puis une seconde boucle permet de créer une liste de tous les éléments item, en utilisant le titre comme texte affiché, l'élément guid (globally unique identifier: identifiant global unique) comme URL, la description étant lisible en survolant le lien avec la souris. Le résultat peut bien entendu être modifié à loisir, notamment par l'ajout d'une CSS, voir par l'intégration de l'interface normale du site dans la sortie HTML.

< Page précédente LANGAGE RSS