RSS 1.0

RDF Site Summary est le format de syndication du Web sémantique, des sites de réseau social. Il est basé sur Resource Description Framework, défini dans le langage de balisage XML. C'est un standard pour partager une liste de nouvelles ou d'annonces sur le Web. C'est aussi un format extensible par modules avec espaces de noms.

Ce tutoriel décrit la structure et les balises de RSS 1.0 et fournit des exemples ainsi que des liens sur des logiciels utiles.
Noter que les contenu des exemples est purement explicatif et les liens qui y sont inclut ne correspondent par à des URL réelles.

Sommaire

Historique du format

RSS 0.90 a été créé par Netscape en mars 1999 pour son propre usage, et c'était le second format après ScriptingNews de UserLand en 1997. L'en-tête était en RDF, le corps du flux en XML. La spécification RDF par le W3C date de la même année.
Il a inspiré ScriptingNews 2.0 de UserLand à la suite de quoi Netscape a créé le format RSS 0.91 qui reprend à son tour les améliorations de ScriptingNews 2.0.
En août 2000, l'éditeur O'Reilly propose le format RSS 1.0 basé entièrement sur RDF.

Le Web sémantique

Le Web sémantique selon le W3C:

Il s'agit de formats communs pour l'intégration et la combinaison de données venant de sources diverses.
Il s'agit de langage pour enregistrer comment les données sont reliées aux objets du monde réel.

Cela permet sur le Web quand on est connecté à une base de données d'accéder à d'autres bases de données qui lui sont reliées. Il faut pour cela des outils de représentation de connaissances, donc des formats.

Le format RDF

Le format RDF spécifié par le W3C en 1999 permet d'enregistrer des relations sous une forme utilisable par les ordinateurs. Le fait que X soit l'auteur de tel document met en relation deux bases de données.
La notion de ressource en est la base, c'est un document sur le Web, sous une forme quelconque. Le format enregistre des relations entre documents en vue de les échanger et les traiter automatiquement.

Il convient donc pour les flux RSS dans un cadre de réseau social ou les relations entre personnes sont traitées ainsi que la publication des documents.

Le format RDF fournit au flux un attribut rdf:about et un sommaire, qui peuvent être traités par les logiciels et interfaces spécialisés comme XUL. L'apport du format RDF se voit surtout dans les modules d'extension et très peu dans le standard de base.

Que contient un flux RSS 1.0?

Le propre du Web sémantique est que le flux RSS sera connecté à des bases de données diverses, sur les articles, les auteurs, les sites.

Informations fournies

  1. Le canal: titre, adresse Internet, description
  2. Les articles: titre, description, lien.
  3. Le sommaire du flux: reprend la liste des articles.

Ces informations peuvent être extraites automatiquement des pages.

Différences avec RSS 2.0

Les formats 1.0 et 2.0 contiennent des informations communes sur le canal et les articles: titre, lien et description, ce qui permet de réaliser des lecteurs de flux universels capable de lire tous les fichiers RSS.
Cependant le format 1.0 est plus développé que le format 2.0:

Différences:

Voir la comparaison des balises des formats de flux.

Où sont prises ces informations?

Les systèmes de gestion de contenu ou CMS, tels que Wordpress, doivent extraire l'information automatiquement à partir des nouvelles pages du site. A chaque balise du flux généré correspond une donnée dans la page ou sur le site.

Canal
  1. <title>: titre de la page d'accueil du site, ou balise <h1>.
  2. <summary>: description trouvée dans la balise meta description de la page d'accueil ou dans le contenu.
  3. L'attribut du canal rdf-about: l'URL du flux.
Item
  1. <title>: titre de la page contenant l'article, , ou balise <h1>.
  2. <description>: balise meta description de la page de l'article ou premier paragraphe, ou extrait du contenu.
  3. <date>: date de dernière modification du fichier.
  4. <link>: l'URL absolue de la page.
  5. L'attribut de l'item rdf-about: l'URL de la page encore.

Les CMS peuvent avoir dans le panel de configuration des champs à remplir qui soient utilisé pour générer le flux, notamment le titre et la description du site.

Construire un flux RSS 1.0 par étapes

Un site Web conforme aux normes ne nécessite aucun changement dans son contenu pour que l'on puisse générer automatiquement ou non un flux de syndication du contenu. La page d'accueil fournira les informations du canal, et à chaque page correspondra un item du flux.

Préparer une page Web

Cette étape n'est pas utile si on construit manuellement le flux, mais si on veut qu'il soit généré automatiquement pas un script, certains éléments doivent figurer dans la page:

  1. La balise <title> contient le titre de la page, tel que l'affiche les moteurs de recherche dans les résultats. La balise <h1> peut jouer le même rôle.
  2. La description. Soit dans la balise meta description, soit dans le texte lui-même. Dans ce cas elle pourrait être désignée par un identificateur:
<span div="description">Résumé de la page</span>

Si l'on dispose d'une page qui soit le sommaire des derniers articles sur un site, cette page HTML peut être transformée en flux RSS. C'est ce que propose la méthode proposée en ressources par le W3C. Cependant, avec les outils actuels, il est plus simple de faire l'inverse, générer le flux avec un script et l'afficher dans une page HTML.

Les pages sont générées et préparées automatiquement par les CMS.

Structure du document

Le flux est un fichier XML et RDF. Il se définit donc ainsi:

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

Deux espaces de noms sont définis, celui de RDF par le W3C et celui de RSS 1.0 par Purl.

Définir le canal

Le chanel est défini par:
- Un titre.
- Une description.
- Un lien.
- Le sommaire des articles.
- Et en option, une image et un textinput.

Le canal de base sera défini ainsi:

<channel rdf:about="http://www.xul.fr/xml/nouvelles.rdf">
<title>Titre du flux</title>
<link>http://www.xul.fr</link>
    <description>
        Le sujet du flux.
    </description>
</channel>

On verra plus loin les balises optionnelles ainsi que le sommaire, obligatoire lui.

La propriété rdf:about définit une URL unique, qui est celle du flux.
Le titre est le sujet du flux, ou le titre sur site Web si c'est le flux unique d'un site.
Le lien est généralement la page d'accueil du site, ou du dossier auquel correspond le flux, ou une page de nouvelles.
Le description définit l'objet du flux.

Définir un élément

Chaque élément est défini par le titre de l'article, sa description et le lien sur l'article.

Le titre vient de la balise <title> de la page, ou à défaut de la première balise <h1>.
La description vient de la la meta description dans la section <head> de la page:

<meta name="description" content="ma description">

A défaut on peut la construire à partir du contenu de la page. C'est ce que fait l'éditeur RSS ARA.

L'URL de la page sera assignée à la balise <link> et aussi à la propriété <rdf:about> pour les logiciels RDF.

Un article aura donc la forme suivante:

<item rdf:about="http://www.xul.fr/article.html">
    <title>Titre de l'article</title>
    <link>http://www.xul.fr/article.html</link>
    <description>
        Résumé de l'article ou contenu de l'annonce.
    </description>
</item>

On définit un item pour chaque article ou annonce, avec un maximum recommandé mais non absolu de 15 items.

Créer un sommaire

La table des matières est définie par la balise <items>. Son contenu équivaut à une liste, avec le format propre à RDF.

Eléments de sommaire:

- Le conteneur <items>.
- La balise <rdf:Seq> pour une liste au format RDF.
- Autant de balises <rdf:li> que d'articles.

Exemple de sommaire:

<items>
    <rdf:Seq>
        <rdf:li rdf:resource="http://www.xul.fr/article1.html" />
        <rdf:li rdf:resource="http://www.xul.fr/article2.html" />
    </rdf:Seq>
</items>

Définition du canal complet avec le sommaire:

<channel rdf:about="http://www.scriptol.fr/xml/nouvelles.rdf">
<title>Titre du flux</title>
<link>http://www.xul.fr</link>
    <description>
        Le sujet du flux.
    </description>
    <items>
        <rdf:Seq>
            <rdf:li rdf:resource="http://www.xul.fr/article1.html" />
            <rdf:li rdf:resource="http://www.xul.fr/article2.html" />
        </rdf:Seq>
    </items>
</channel>

Un fichier sans sommaire sera rejeté par les parseurs RDF, tandis les lecteurs universels l'ignoreront.

Ajouter une image au canal

Une image de taille 88x31 pixel et dans format de fichier usuel peut être affichée dans le flux. Pour cela on utilise la balise optionnelle image.
La balise image est incluse dans la balise channel.

L'attribut rdf:resource associe le canal et le fichier de l'image.

<image rdf:resource="http://www.xul.fr/logo.gif" />

Le canal est ainsi associé à une image qui est en outre définie dans une balise image au même niveau que les balises item.
La définition contient les balises internes title, link et url, qui indiquent dans l'ordre: le titre du site, le lien sur le site, et le lien sur l'image.
Ici l'attribut rdf:about définit l'url de l'image.

<image rdf:about="http://www.xul.fr/logo.gif">
    <title>Ajax et XUL</title>
    <link>http://www.xul.fr</link>
    <url>http://www.xul.fr/logo.gif</url>
</image>

Ces définitions sont plutôt redondantes et sont destinées aux logiciels de traitement automatiques de fichier RDF.

Ajouter un textinput

Un textinput est un champ de formulaire HTML. Il permet d'entrer un texte dans la page du flux comme dans notre exemple, une boite de recherche. La prise en charge du formulaire est faite par le logiciel qui affiche le flux, lequel doit convertir cet élément en formulaire HTML et associer un traitement du texte entré par l'utilisateur.

Comme pour l'image, le textinput est déclaré dans le canal et il défini dans le document au même niveau que les articles.

Déclaration:

<textinput rdf:resource="http://www.xul.fr/chercher.php" />

Exemple de définition de textinput pour un champ de recherche:

<textinput rdf:about="http://www.xul.fr/chercher.php">
    <title>Rechercher</title>
    <description>Chercher sur le site xul.fr</description>
    <name>monchamp</name>
    <link>http://www.xul.fr/chercher.php</link>
</textinput>

Le champ name permettra aux fonctions DOM de localiser le formulaire dans la page.

Donner les dates

Il n'y a pas de balise de date dans le standard de base RSS 1.0, les dates de publication ou de modification doivent être spécifiées par le module d'extension dublin core.

Dans la liste des espaces de noms, on ajoute cette ligne:

xmlns:dc="http://purl.org/dc/elements/1.1/"

Et dans la balise <item>, on ajoute la ligne de date conformément à la spécification du module.

<dc:date>2008-05-16/dc:date>

Ce module permet également de donner une date au canal et d'ajouter des informations (métadonnées) sur les articles.

Exemple

Exemple de flux RSS 1.0 complet.

Utiliser un flux RSS 1.0

Le flux peut être placé sur un site Web et lu par les navigateurs ou être traité par un agrégateur ou logiciel RDF. Dans tous les cas certaines conventions doivent être suivies...

Type mime:

Le type recommandé, est application/rss, et pour bien faire on utilisera application/rss+xml.

Extension de fichier:

L'extension .rdf permet d'identifier la nature du flux, et est donc recommandée.

Encodage:

RSS 1.0 est encodé au format UTF-8. Donc si on l'affiche dans une page Web, elle doit avoir ce format ou sinon le flux doit être converti dans le format de la page.

En-tête de page:

Pour que le flux soit vu par les navigateurs, l'en-tête de la page doit contenir la ligne suivante:

<link rel="alternate" type="application/rss+xml" href="http://www.xul.fr/rss.rdf" title="Mon flux RSS 1.0">

Un lien sur le flux informe les visiteurs de sa présence. Il peut utiliser l'image rss: (téléchargez l'image, n'utilisez pas directement l'image sur ce site comme le fait Facebook sans égard à ma bande passante, car l'image sera alors remplacée par le logo xul.fr. Peut-être avez vous rencontré ce logo sur des blogs Facebook?).

Documentation et logiciels

Références

Outils et services


© 2008-2012 Xul.fr