<?xml version="1.0" encoding="iso-8859-1"?>
<!DOCTYPE article PUBLIC "-//OASIS//DTD DocBook XML V4.2//EN"
"http://openweb.eu.org/dtd/docbkx42/docbookx.dtd">
<article lang="fr" id="rss_introduction" role="article">
  <articleinfo>
    <title>Introduction à la syndication de contenu avec RSS</title>
    <author>
      <firstname>François</firstname>
      <surname>Hodierne</surname>
    </author>
    <legalnotice>
      <para>Cet article est sous licence <ulink url="http://creativecommons.org/licenses/by-sa/1.0/legalcode">Creative Commons Attribution-ShareAlike</ulink>.</para>
    </legalnotice>
    <abstract>
      <para>Qu'est-ce que la syndication de contenu ? Qu'est-ce qu'un fil <acronym>RSS</acronym> ?</para>
    </abstract>
    <pubdate>2004-10-14</pubdate>
    <date>2004-10-14</date>
    <subjectset>
      <subject role="profil">
        <subjectterm>debutant</subjectterm>
      </subject>
      <subject role="technologie">
        <subjectterm>rss</subjectterm>
      </subject>
      <subject role="theme" />
    </subjectset>
  </articleinfo>
  <section>
    <title>La syndication de contenu</title>
    <para>Le terme syndication vient de l'anglais. À l'origine, il désigne la
    vente de contenu télévisuel à plusieurs autres chaînes simultanément, une
    émission TV pouvant ainsi être relayée sur plusieurs networks. La
    syndication de contenu sur Internet pouvait à l'origine être définie comme 
    <emphasis role="strong">le partage de contenu entre sites ou
    portails</emphasis>.</para>
    <para>Mais le terme a ensuite été utilisé, 
    <emphasis>peut-être à tort</emphasis>, pour recouvrir de nouvelles
    réalités :</para>
    <itemizedlist>
      <listitem>
        <para>l'abonnement à des sites Web via un logiciel spécifique que l'on
        appelle <emphasis role="strong">agrégateur</emphasis> ;</para>
      </listitem>
      <listitem>
        <para>la mise à disposition du contenu d'un site sous une forme
        facilement compréhensible et indexable par des robots ou n'importe
        quelle autre application.</para>
      </listitem>
    </itemizedlist>
    <para>À défaut d'un terme meilleur, nous utiliserons celui de 
    <emphasis>syndication</emphasis> ainsi défini par 
    <ulink url="http://web.resource.org/rss/1.0/spec">la spécification
    RSS 1.0</ulink> : <quote>mise en ligne de données disponibles pour
    récupération et retransmission, agrégation ou publication en
    ligne</quote>.</para>
    <para>Aujourd'hui, en pratique, les principes de syndication conviennent en
    fait à tout type de contenu régulièrement mis à jour :</para>
    <itemizedlist>
      <listitem>
        <para>fils d'information : actualité générale, weblogs, résultats
        sportifs ;</para>
      </listitem>
      <listitem>
        <para>fils de discussion : forums, mailing-lists, commentaires de
        weblogs ;</para>
      </listitem>
      <listitem>
        <para>petites annonces : offres d'emplois, annonces immobilières,
        enchères ;</para>
      </listitem>
      <listitem>
        <para>suivi / « tracking » : changements CVS, wikis, gestionnaires
        de bugs.</para>
      </listitem>
    </itemizedlist>
  </section>
  <section>
    <title><acronym>RSS</acronym></title>
    <para><acronym>RSS</acronym> est aujourd'hui le format de syndication le
    plus populaire. <acronym>RSS</acronym> est une application 
    <acronym>XML</acronym> créée en 1999 par la société Netscape. Par la suite,
    la spécification a été la victime de mésententes et de divergences
    politiques. <acronym>RSS</acronym> n'est donc, du coup, pas une
    spécification à proprement parler, mais un ensemble de normes co-existantes
    pas forcément compatibles. Dans ce grand bazar, nous retiendrons :</para>
    <itemizedlist>
      <listitem>
        <para><acronym>RSS</acronym> 0.91 (Rich Site Summary) : une évolution
        mineure de la spécification originale de Netscape ;</para>
      </listitem>
      <listitem>
        <para><acronym>RSS</acronym> 1.0 (RDF Site Summary) : une spécification
        basée sur <acronym>RDF</acronym> conçue par un groupe de développeurs
        indépendants dans l'esprit originel de ses concepteurs ;</para>
      </listitem>
      <listitem>
        <para><acronym>RSS</acronym> 2.0 (Really Simple Syndication) : une
        spécification écrite par Dave Winer, le plus fervent acteur du monde de
        la syndication.</para>
      </listitem>
    </itemizedlist>
    <para>Dans un autre registre, on notera aussi le projet de spécification 
    <emphasis role="strong">Atom</emphasis> qui est actuellement en cours de
    développement et de normalisation. Même si on ne peut juger des chances de
    succès de cette inititative, des poids lourds de l'industrie informatique
    ainsi que beaucoup de personnes y placent beaucoup d'espoir.</para>
  </section>
  <section>
    <title>Création d'un fil <acronym>RSS</acronym> simple avec 
    <acronym>RSS</acronym> 0.91</title>
    <variablelist>
      <varlistentry>
        <term>En-tête <acronym>XML</acronym> et <acronym>DTD</acronym></term>
        <listitem>
          <programlisting><![CDATA[<?xml version="1.0" encoding="iso-8859-1"?>
<!DOCTYPE rss PUBLIC "-//Netscape Communications//DTD RSS 0.91//EN"
"http://my.netscape.com/publish/formats/rss-0.91.dtd">]]></programlisting>
        </listitem>
      </varlistentry>
      <varlistentry>
        <term>Racine <acronym>XML</acronym></term>
        <listitem>
          <programlisting><![CDATA[<rss version="0.91">]]></programlisting>
        </listitem>
      </varlistentry>
      <varlistentry>
        <term>Ouverture du canal</term>
        <listitem>
          <programlisting><![CDATA[<channel>]]></programlisting>
        </listitem>
      </varlistentry>
      <varlistentry>
        <term>Informations sur le canal</term>
        <listitem>
          <programlisting><![CDATA[<title>Openweb.eu.org</title>
<link>http://www.openweb.eu.org/</link>
<description>Description du site OpenWeb</description>
<language>fr</language>]]></programlisting>
        </listitem>
      </varlistentry>
    </variablelist>
    <para>Ensuite, le c&#339;ur du fil <acronym>RSS</acronym> se compose d'une
    suite d'éléments <sgmltag>item</sgmltag> correspondant chacun à un article
    (pour le cas d'un site de contenu). Pour un fil <acronym>RSS</acronym>
    minimal, l'élément <sgmltag>item</sgmltag> contient 3
    sous-éléments :</para>
    <itemizedlist>
      <listitem>
        <para><sgmltag>title</sgmltag> : le titre de l'élément ;</para>
      </listitem>
      <listitem>
        <para><sgmltag>link</sgmltag> : un lien vers l'élément ou son 
        <acronym>URL</acronym> ;</para>
      </listitem>
      <listitem>
        <para><sgmltag>description</sgmltag> : une description de moins de
        500 caractères. Pour un article, son chapeau, un résumé ou un
        extrait.</para>
      </listitem>
    </itemizedlist>
    <para>Ainsi, si l'on créait le fil <acronym>RSS</acronym> des articles du
    site OpenWeb (à l'heure où cet article est écrit), cela donnerait :</para>
    <programlisting><![CDATA[<item>
<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>

<item>
<title>Passer aux feuilles de style</title>
<link>http://openweb.eu.org/articles/initiation_css/</link>
<description>Vous utilisiez les balises HTML de présentation ? Pour
tirer parti des avantages offerts par les standards, découvrez le
vocabulaire élémentaire des feuilles de style.</description>
</item>

<item>
<title>Les bénéfices des standards par un graphiste Web</title>
<link>http://openweb.eu.org/articles/interview_ned_baldessin/</link>
<description>Ned Baldessin, professionnel du Web, nous présente le
point de vue des graphistes sur les différentes technologies qui forment
les standards de l'Internet.</description>
</item>]]></programlisting>
    <para>Pour les besoins de l'exemple nous n'avons mis que 3 articles, mais
    la spécification <acronym>RSS</acronym> 0.91 précise que l'on peut en
    mettre jusqu'à 15.</para>
    <para>Enfin, pour clore notre fil <acronym>RSS</acronym>, il suffit de
    fermer les balises que nous avons ouvertes au tout début :</para>
    <programlisting><![CDATA[</channel>
</rss>]]></programlisting>
    <para>Le fichier que nous avons créé est disponible ici : 
    <ulink url="annexes/exemple_RSS_091.xml">exemple_RSS_091.xml</ulink>.</para>
  </section>
  <section>
    <title>Notes</title>
    <para>Comme la plupart des fichiers sur le Web, l'extension du fichier et
    son nom n'ont aucune importance. Un fil <acronym>RSS</acronym> peut aussi
    bien s'appeler <filename>rss.php</filename>, <filename>index.xml</filename>
    que <filename>feed.rss</filename>.</para>
    <para>Le type <acronym>MIME</acronym> envoyé est par contre beaucoup plus
    important
    (<ulink url="http://www.commentcamarche.net/systemes/mime.php3">qu'est-ce
    qu'un type/mime ?</ulink>). En tant que fichier <acronym>XML</acronym>, il
    peut être envoyé en tant que <token>text/xml</token> mais l'idéal est de
    l'envoyer avec le type <acronym>MIME</acronym>
    <token>application/rss+xml</token>.</para>
    <para>Aussi, une bonne pratique consiste à indiquer la présence d'un fil 
    <acronym>RSS</acronym> pour un site en mentionnant son 
    <acronym>URL</acronym>dans la section <sgmltag>head</sgmltag>
    <acronym>HTML</acronym> de la page.</para>
    <programlisting><![CDATA[<link rel="alternate" type="application/rss+xml"
    title="RSS" href="http://example.com/feed.xml" />]]></programlisting>
    <section>
      <title>Validité</title>
      <para>Pour être considéré comme valide, le fil <acronym>RSS</acronym> doit
      tout d'abord être bien formé <acronym>XML</acronym>. La méthode la plus
      facile pour tester cela consiste à l'ouvrir dans Mozilla ou dans Internet
      Explorer qui vous mentionneront les éventuelles erreurs.</para>
      <para>Ensuite, il faut tester sa validité <acronym>RSS</acronym>. L'outil
      recommandé pour cela est le Feed Validator disponible à l'adresse 
      <ulink url="http://feedvalidator.org/">http://feedvalidator.org/</ulink>.</para>
    </section>
  </section>
  <section>
    <title>Conclusion</title>
    <para>Dans cet article, nous ne sommes volontairement pas allés très loin
    et n'avons pas non plus utilisé toutes les possibilités de la spécification 
    <acronym>RSS</acronym> 0.91. Il s'agissait juste de poser les bases de la
    syndication de contenu sur Internet. Pour inclure plus de méta-données et
    faire quelque chose de plus complet, nous utiliserons la spécification 
    <acronym>RSS</acronym> 1.0 dans un prochain article.</para>
  </section>
  <section>
    <title>Liens</title>
    <itemizedlist>
      <listitem>
        <para><ulink url="http://my.netscape.com/publish/formats/rss-spec-0.91.html">Spécification <acronym>RSS</acronym> 0.91</ulink></para>
      </listitem>
    </itemizedlist>
  </section>
</article>
