[spip-dev] [modif] rss 2.0

Bonjour,

Fil écrivit

<generator>SPIP <?php echo $spip_version_affichee; ?></generator>

Si les conditions requises (en premier que SPIP puisse « syndiquer » des
fichiers rss 2.0) pour passer à rss 2.0 sont remplies et si le
comité directeur veut passer à rss 2.0, voici ci-dessous une modif
pour le faire.

Notes :

On peut renommer les éléments (remplacer les occurences de) « <pubdate> »
en « <dc:date> », si on remplace « <rss version="2.0"> » par
« <rss version="2.0" xmlns:dc="DCMI: DCMI Metadata Terms; ».

Introduction à Dublin Core :

diff -u backend-breves-dist.html
--- backend-breves-dist.html Tue Sep 16 21:56:58 2003
+++ backend-breves-dist.html Fri Oct 31 18:11:30 2003
@@ -1,6 +1,6 @@
<?php echo '<'.'?xml version="1.0" encoding="#CHARSET"?'.'>'; ?>

-<rss version="0.91">
+<rss version="2.0">

<channel>

@@ -8,7 +8,7 @@
   <link>#URL_SITE_SPIP/</link>
   <description></description>
   <language>#LANG</language>

On peut renommer les éléments (remplacer les occurences de) « <pubdate> »
en « <dc:date> », si on remplace « <rss version="2.0"> » par
« <rss version="2.0" xmlns:dc="DCMI: DCMI Metadata Terms; ».

Oui, en général je serais assez d'accord avec les changements proposés. Avec
les modifications suivantes:

Si on veut utiliser <dc:generator>, il FAUT déclarer l'extension dc:
<rss version="2.0" xmlns:dc="DCMI: DCMI Metadata Terms;

Pour les auteurs, il faudrait remplacer <author> par <dc:creator>.
Selon les spécifications RSS 2.0, <author> exige la présence d'une adresse
d'email. Exemple: <author>allo@toi.com (Jean Dupont)</author>. Je ne pense
pas qu'il soit souhaitable de mettre les adresses d'email des auteurs dans
le backend RSS. SPIP reconnaît maintenant la balise <dc:creator> (voir:
ecrire/inc_sites).

Pour les dates, j'opterais pour <dc:date> plutôt que <pubdate> ou <date>.
Les 3 sont reconnus par SPIP (/ecrire/inc_sites). Mais...

<date> ne fait pas partie des spécifications RSS.

<pubdate> exige un format de date conforme à la RFC 822
Exemple: <pubDate>Wed, 02 Oct 2002 13:00:00 GMT</pubDate>
-> http://feedvalidator.org/docs/error/InvalidRFC2822Date

Le nom de la balise est plus explicite que dc:date, mais son format est
monolingue anglais et difficile à générer.

<dc:date> exige un format de date conforme à ISO-8601
Exemple: <dc:date>2002-10-02T10:00:00</dc:date>
-> Date and Time Formats

La balise #DATE produit: 2002-01-01 10:00:00 (sans T)
On pourrait certes écrire:
<dc:date>[(#DATE|annee)-][(#DATE|mois)-][(#DATE|jour)T][(#DATE|heures):][(#D
ATE>minutes):][(#DATE|secondes)]</dc:date>

Le problème c'est que le filtre jour génère des 1er, 2, 3... 1st, 2nd, 3th
Je n'ai pas trouvé de filtre pour produire 01, 02, 03

Mais j'ai trouvé cette fonction dans la liste spip_dev qui fait très bine le
travail. À ajouter à mes_fonctions.php3. Voir la fonction à la fin de ce
message. Ce qui donnerait maintenant:

<dc:date>[(#DATE|annee)-][(#DATE|mois)-][(#DATE|jour_zero)T][(#DATE|heures):
][(#DATE|minutes):][(#DATE|secondes)]</dc:date>

Avec ces modifications, nous avons maintenant un fil RSS 2.0 qui est
compatible vers le bas avec SPIP et les autres aggrégateurs... et qui valide
partout... :=)

André Vincent
PS - Je joins aussi un exemple de backend pour la version 1.7b2 au présent
message.

<?
/*
* +----------------------------------+
* Nom du Filtre : jour_zero
* +----------------------------------+
* Auteurs : Christophe Bersihand

backend.html (2.36 KB)

Petite erreur dans mon fichier d'exemple backend aux lignes 36 et 37 et
aussi pour tenir compte des modifications de filtrage en cours, semble-t-il
sur Spip_contrib.

Je retourne le fichier d'exemple attaché corrigé.

Une contribution sera aussi disponible sur d'autres options liées au RSS
lorsque que la version 1.7 sera arrêté - Spip_contrib, notamment utilise un
filtrage légèrement différent de la 1.7b2.

Exemple:
-> http://www.uzine.net/spip_contrib/backend.html
<title>[(#TITRE|textebrut|htmlspecialchars|entites_unicode)]</title>

Exemple:
-> http://www.uzine.net/spip_contrib/backend-dist.html
<title>[(#TITRE|textebrut|entites_html|entites_unicode)]</title>

André

backend.html (2.56 KB)