Construction d’un fil RSS 1.0

Openweb.eu.org > Articles  > Construction d’un fil RSS 1.0

Abstract

Pas à pas, comment construire un fil RSS au format RDF Site Summary 1.0.

Article

Cet article fait suite à l'Introduction à RSS et reprend en particulier son exemple de fil RSS des publications d'OpenWeb.

La spécification RSS 1.0, datée de décembre 2000, a été créée par un groupe de travail indépendant. Selon cette spécification, RSS 1.0 est un format de syndication et de description de métadonnées léger, universel et extensible. Il se base intégralement sur la spécification RDF du W3C, en adoptant une structure modulaire basée sur les espaces de noms XML.

Changements par rapport à RSS 0.91

  • La déclaration de DTD disparaît.
  • La racine XML devient :

    <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
    xmlns="http://purl.org/rss/1.0/">

    Il faut donc désormais clore le fil par </rdf:RDF> et non plus par </rss>.

  • La balise channel se voit ajouter un attribut obligatoire "rdf:about" qui aura comme valeur l'URI du feed. Le plus souvent, on prendra l'URL du site ou l'URL du fichier RSS :

    <channel rdf:about="http://www.openweb.eu.org">

    La balise item se voit aussi ajouter cet attribut obligatoire "rdf:about" qui aura comme valeur l'URI de l'élément, c'est-à-dire, là encore, le plus souvent son URL :

    <item rdf:about="http://openweb.eu.org/articles/png_vs_gif/">
    
    <title>Le PNG face au GIF</title>
    <link>http://openweb.eu.org/articles/png_vs_gif/</link>
    <description>Qui est donc ce remplaçant du GIF, datant de 1996 et
    méconnu de la plupart des graphistes, amateurs comme
    professionnels ?</description>
    </item>

    Comme la valeur de ce paramètre "rdf:about" est une URI, il est entendu qu'elle est unique dans le temps et ne doit pas varier. C'est en effet ce paramètre qui permet d'identifier d'une manière certaine l'élément.

  • La balise language disparaît.
  • Le changement le plus marquant est sans doute la présence obligatoire d'une table des matières en début de fichier avec la liste des éléments décrits dans le fil RSS. Cette table des matières prendra la forme suivante :

    <items>
    <rdf:Seq>
    <rdf:li rdf:resource="http://openweb.eu.org/articles/png_vs_gif/"/>
    <rdf:li rdf:resource="http://openweb.eu.org/articles/initiation_css/"/>
    <rdf:li rdf:resource="http://openweb.eu.org/articles/interview_ned_baldessin/"/>
    </rdf:Seq>
    </items>

    Les valeurs "rdf:ressource" doivent correspondre aux valeurs "rdf:about" des item correspondants.

  • La clôture de l'élément channel est déplacée. On le ferme désormais avant le premier item et non plus après le dernier item.

Le document RSS 0.91 que nous avions créé précédemment devient ainsi un premier exemple de feed RSS 1.0 minimal (le fichier est commenté).

Les modules

Un mécanisme d'extensivité

Les concepteurs de RSS 1.0 ont pris le parti de s'en tenir à un noyau de spécification aussi simple que possible. Ainsi, pour la description d'un élément, il n'existe que trois éléments (title, link et description). Pour aller plus loin et enrichir les (méta)données, ils ont decidé que tout se passerait via des modules qui permettent à RSS d'être étendu :

  • sans nécessiter des réécritures itératives de la spécification du noyau ;
  • sans qu'un consensus soit nécessaire pour chaque élément ;
  • sans alourdir RSS avec des éléments qui, en majorité, resteraient inutilisés dans la plupart des domaines et des applications.

Cette modularisation est accomplie en utilisant les espaces de noms XML . Dès lors, ajouter ou supprimer des fonctionnalités RSS revient simplement à inclure un ensemble spécifique de modules, les plus adaptés à la tâche à accomplir. Les modules les plus répandus sont :

Modules
Nom Statut Usage
Dublin Core Officiel définir des méta-données comme des dates, des auteurs, des mots-clefs…
Syndication Officiel donner des indications sur la fréquence de mise à jour
Content Officiel associer le contenu complet d'un article
Admin Proposé donne des indications sur le générateur du fil RSS
Creative Commons Proposé associer un copyright de type Creative commons
Wiki Proposé définir des méta-données propres aux wikis

Le module Dublin Core

Prenons tout d'abord l'exemple du module Dublin Core qui est sans doute un des plus utiles et des plus utilisés. (Pour en savoir plus sur le Dublin Core, vous pouvez consulter l'article Métadonnées et Dublin Core.)

Déclarons tout d'abord le module Dublin Core dans les espaces de noms XML :

<rdf:RDF xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns="http://purl.org/rss/1.0/">

Nous pouvons à présent ajouter à notre fil :

  • un auteur : dc:creator ;
  • une date : dc:date (au format W3CDTF ) ;
  • une langue : dc:language ;
  • des rubriques ou catégories : dc:subject ;
  • ou toute autre méta-donnée disponible dans le Dublin Core.

Reprenons l'exemple de notre fil OpenWeb, tout d'abord pour le canal :

<channel rdf:about="http://www.openweb.eu.org/">
<title>Openweb.eu.org</title>
<link>http://www.openweb.eu.org/</link>
<description>Description du site OpenWeb</description>

<dc:language>fr</dc:language>
etc.

Puis pour un élément :

<item rdf:about="http://openweb.eu.org/articles/png_vs_gif/">
<title>Le PNG face au GIF</title>
<link>http://openweb.eu.org/articles/png_vs_gif/</link>

<description>Qui est donc ce remplaçant du GIF, datant de 1996 et
méconnu de la plupart des graphistes, amateurs comme
professionnels ?</description>
<dc:creator>Fabrice Bonny</dc:creator>
<dc:date>2004-03-21</dc:date>
<dc:subject>Débutant,Expert,PNG,Multimédia</dc:subject>
</item>

Voir l'exemple complet avec l'ajout des éléments Dublin Core.

Module Content

Un choix inévitable au moment de former un fil RSS est de décider si l'on délivre le contenu complet du site (les articles entiers) ou si l'on ne fait qu'avertir le lecteur de sa mise en ligne (en lui fournissant une description, un résumé, le début des articles…) :

  • dans le cadre de notre exemple (un fil signalant l'actualité du site OpenWeb), il est inutile de syndiquer intégralement les articles puisqu'il s'agit d'inviter les utilisateurs à consulter le site original ;
  • à l'inverse, la reproduction intégrale du contenu est nécessaire lorsqu'on souhaite permettre sa publication sur d'autres sites.

Dans ce dernier cas en particulier, il est intéressant d'enrichir le contenu avec des balises HTML plutôt que de n'offrir qu'un texte brut. C'est le rôle du module content.

Ajoutons tout d'abord ce module comme nous l'avons vu précédemment pour le Dublin Core :

<rdf:RDF xmlns:content="http://purl.org/rss/1.0/modules/content/"
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns="http://purl.org/rss/1.0/">

Puis, au niveau des item :

<item rdf:about="http://example.com/foo">
<title>My title</title>
<link>http://example.com/foo</link>
<description>Lorem ipsum</description>

<content:encoded>
<![CDATA[<p>Mon contenu peut désormais
être en <abbr>html</abbr>.</p>]]></content:encoded>
</item>

On notera ici l'utilisation de la section XML CDATA dont le contenu ne sera pas interprété comme du code source XML par les analyseurs syntaxiques. Ceci permet aux balises HTML d'être considérées comme du texte brut et d'éviter ainsi les conflits avec les balises XML. Une autre manière de faire aurait été d'échapper le balisage HTML, en transformant :

  • < en < ;
  • > en > ;
  • & en & ;
  • ' en ' ;
  • " en ".

Notre exemple serait alors :

<content:encoded>
<p> Mon contenu peut désormais
être en <abbr>html</abbr>. </p>

</content:encoded>

Associer une image au fil RSS

Une bonne pratique existante consiste à associer une image (logo) au fil RSS. Cette image pourra apparaître dans les logiciels d'aggrégation ou sur les sites reprenant vos titres. Tout d'abord, il faut déclarer l'image dans la section channel du fil RSS avec son URI :

<channel rdf:about="http://www.openweb.eu.org/">
<title>Openweb.eu.org</title>
<link>http://www.openweb.eu.org/</link>
<description>Description du site OpenWeb</description>
<dc:language>fr</dc:language>

<image rdf:resource="http://openweb.eu.org/img/logo.png"/>
<items>
<rdf:Seq> [...] </rdf:Seq>
</items>
</channel>

Ensuite, il suffit d'insérer l'élément image au même niveau que les item. Cet élément image comporte 3 sous-éléments obligatoires ainsi définis :

  • title : le texte alternatif (attribut "alt") associé à la balise image du canal lorsqu'il est rendu en HTML ;
  • url : l'URL de l'image à utiliser dans l'attribut "src" de la balise image du canal rendu en HTML ;
  • link : l'URL à laquelle sera liée l'image du rendu HTML du canal. Comme le lien du titre du canal, il s'agit communément de la page d'accueil du site parent ou de la page d'actualité.

Ce qui donne :

<image rdf:about="http://openweb.eu.org/img/logo.png">
<title>OpenWeb, pour les standards du web</title>
<url>http://openweb.eu.org/img/logo.png</url>
<link>http://openweb.eu.org/</link>
</image>

Voir notre exemple de fil RSS avec image.

Conclusion

Bien que sa syntaxe paraisse un peu complexe, RSS 1.0 est une bonne introduction au monde du Web sémantique et des technologies RDF car il en donne une application pratique et grand public, tout comme son cousin FOAF.

Liens

À propos de cet article

  • Openweb.eu.org
  • Profil : Débutant, Expert
  • Technologie : RSS
  • Auteur :
  • Publié le :
  • Mise à jour : 25 juin 2008

Vos commentaires

modération a priori

Attention, votre message n’apparaîtra qu’après avoir été relu et approuvé.

Qui êtes-vous ?
Ajoutez votre commentaire ici

Ce champ accepte les raccourcis SPIP {{gras}} {italique} -*liste [texte->url] <quote> <code> et le code HTML <q> <del> <ins>. Pour créer des paragraphes, laissez simplement des lignes vides.

Suivre les commentaires : RSS 2.0 | Atom