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"
desitem
correspondants. - La clôture de l'élément
channel
est déplacée. On le ferme désormais avant le premieritem
et non plus après le dernieritem
.
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 :
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.
Vos commentaires
Suivre les commentaires : |