Flux RSS
Comment implémenter un flux RSS dans Domino
Reprise de la publication sur domino.stergann.org.
Je me suis plus vidé la tête, ces derniers temps, sur http://mots.stergann.org
Pour la reprise, voici donc un petit 'tutoriel' expliquant une des méthodes de réalisation d'une interface RSS dans une application Lotus Notes Web.
Cet article ne présente qu'une des méthode possible pour implémenter du RSS dans une application Notes/Web,
il en existe bien d'autres. C'est par contre une des méthodes qui présente l'intérêt d'être réalisable quasi sans connaissance de la programmation sous Domino Designer.
...
...
Le RSS, Really Simple Syndication, consiste à formater des données selon des standards XML (eXtended Markup Language pour l'acronyme, si ma mémoire ne me joue pas de tours) afin de permettre aux utilisateurs d'un site Web de s'abonner aux publications réalisées sur le site concerné. Un système d'alertes en quelques sortes.
Les navigateurs Web actuels sont pratiquement tous des clients RSS.
Il existe également des logiciels clients dédiés à l'abonnement aux flux RSS (exemple ici : http://www.dmoz.org//World/Français/Informatique/Logiciels/Internet/Clients/WWW/Lecteurs_de_flux/ )
Les utilisateurs utilisent un client RSS pour s'abonner et recevoir un résumé des publications d'un ou de plusieurs sites 'Serveur RSS'.
Le format RSS est, dans le principe, effectivement, réellement simple.
Un abonnement RSS, côté serveur, consiste en une page Web régulièrement mise à jour et construire dans une structure de balises très précise.
Les balises, pour les néophytes, permettent de décrire le texte ou les objets (images, tableaux...) présentés au logiciel client.
Les balises HTML, par exemple, gèrent, dans une page Web, une problématique de présentation des données :
- mettre du texte en <b>gras</b>
- insérer un lien vers <a href='source du lien'>un URL particulier </a>
- définir un paragraphe <p> </p>
- etc
Les balises XML, quant à elles, sont en charge de gérer une problématique de sémantique des données. Elles permettent, par exemple, de structurer les données d'un texte là où le HTML ne fait que les présenter.
Le XML est utilisé dans de nombreux contextes.
Les CSS (Cascading Style Sheets) en sont un exemple d'utilisation fréquente. Le CSS permet de centraliser et de maintenir de manière plus efficace les styles de présentation d'un site Web. Au lieu définir le style de chacun des paragraphes d'un texte dans les balises <p> de chaque paragraphe, CSS vous permet de définir un style de paragraphe une bonne fois pour toutes, puis de le rappeler, à l'aide d'une balise référentielle, sur chacun des paragraphes auquel vous souhaitez affecter le style concerné (mais ce n'est pas l'objet du jour, pourquoi pas le sujet d'un prochain article sur stergann.org)
Le RSS est un autre exemple d'utilisation du langage XML.
Structure d'une page RSS
Une page RSS utilise donc des balises XML afin de présenter son contenu dans un format reconnu et interprétable par des clients RSS.
Les données de contenu sont imbriquées entre des balises sur le principe :
<balise d'ouverture>donnée de contenu<balise de fermeture>
La structure de la page doit être respectée au risque de la rendre incompatible avec les logiciels client.
La page commence toujours par une balise d'en-tête RSS permettant de spécifier la version de langage utilisée.
Exemple :
<rss version="2.0"
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
xmlns:admin="http://webns.net/mvcb/"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:content="http://purl.org/rss/1.0/modules/content/"
xmlns:wfw="http://wellformedweb.org/CommentAPI/"
xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
xmlns:itunes="http://www.itunes.com/dtds/podcast-1.0.dtd">
Puisque nous avons une balise ouvrante, il faudra terminer la page par son équivalence de fermeture :
</rss>
Le contenu va s'insérer entre ces deux balises.
Il faut donc commencer par une balise permettant au client RSS d'identifier le début du contenu, ou du flux RSS. Il s'agit de la balise <channel> et de son équivalence de fermeture </channel>.
Les données s'insèrent ensuite, comme dans un jeu de poupées russes, entre ces deux balises.
On commence par baptiser le flux de données.
<title>stergann.org : Lotus Notes et Domino</title>
On peut ensuite donner une description de l'abonnement :
<description>Blog technique consacre a Lotus Notes Domino</description>
Puis on spécifie la date de mise à jour de l'abonnement :
<lastBuildDate>06/06/2008 22:55:40</lastBuildDate>
Enfin, avant de passer aux articles publiés, l'adresse du site à l'aide d'une balise de lien :
<link>http://domino.stergann.org/web/domsphere.nsf</link>
Les données de publication se déclarent ensuite entre des séries de balises <item></item> :
<item> dernier article </item>
<item> avant dernier article </item>
Structure des Items d'un abonnement RSS
Comme pour la structure d'une page, un item (un article, une publication...) est régi par une structure de balises ouverture/fermeture.
On commence par spécifier le titre de la publication (requis) :
<title>News</title>
Vient ensuite l'adresse référentielle de l'item (requis) :
<link>http://domino.stergann.org/web/domsphere.nsf/d6plinks/PMOY-7G7AK9</link>
Puis la description de l'item (requis) :
<description>Les dernières news de mon site</description>
Et la date de parution (optionnelle) :
<pubdate>Mon, 30 Jun 2008 06:10:00 +0100</pubdate>
Il existe beaucoup d'autres balises permettant d'insérer :
- des images <image>
- le nom de l'auteur <author>
- la catégorie de l'article <category>
- etc
Recette de cuisine : réaliser une interface RSS dans Notes
Maintenant que la structure de la page RSS est connue, comment l'implémenter dans une application Notes.
L'idée est de ne pas avoir à mettre à jour manuellement la page RSS à chaque fois qu'un nouvel article est ajouté au site.
Il y a plusieurs méthodes pour y parvenir.
Un agent Lotus Script ferait très bien l'affaire.
On peut également se débrouiller en jouant plus simplement (j'ai des doutes sur ce qualificatif !!!) avec es éléments structurels d'une base Lotus Notes.
C'est l'exemple que j'ai choisi d'illustrer.
Et là, je mets ma toque, puis je me déguise en Maïté derrière ses casseroles (je ne regarde pas souvent la télé, je ne sais pas qui présente les émissions de cuisine actuellement), un hachoir à la main, un couteau dans l'autre...
:0)
1.
Commencer par créer une vue HTML afin de présenter les items de l'abonnement.
La vue doit lister et baliser l'ensemble des items du flux. Il faut donc indiquer au serveur Domino de servir la vue tel quel en considérant qu'il s'agit de code HTML :
2.
La première colonne de la vue n'a pour objectif que de classer, d'ordonnancer les entrées, par date de création par exemple, en triant les documents pour afficher l'entrée la plus récente en tête de liste :
3.
La colonne est masquée, ne servant que pour l'ordonnancement des documents, elle n'a aucun intérêt à être visible sur le Web :
4.
La seconde colonne servira à afficher les balises <item> </item> et leur contenu extrait des documents de l'application. Le code de la colonne référence des champs de l'application, du texte, des variables. Par exemple :
A noter le remplacement de caractères accentués qui, dans certains clients RSS, génèrent des erreurs.
5.
C'est tout pour la vue.
On peut la mettre au four 5 minutes, le temps de créer la structure de la page RSS.
6.
Pour structurer la page RSS, on peut, dans Notes, utiliser une page ou un masque.
Dans mon exemple, j'utilise une page. Il faut spécifier, au niveau des propriétés de la page, qu'il s'agit d'un contenu XML :
7.
Le développement de la page est assez simple. Il suffit de reprendre les balises d'en têtes XML telles que décrites dans le premier point de cet article :
Pour la balise LastBuidDate, j'ai utilisé du code permettant d'aller cherche la date de création du dernier document de l'application Web.
Le plus simple est d'utiliser une vue qui affiche la date de création des documents, de trier la vue en ordre croissant ou décroissant sur les dates de création, puis d'extraire la première ou la dernière (en fonction de l'ordre de tri) valeur de date (un simple @DbColumn suffit pour cela).
8.
Le texte est affecté du style HTML Relais, une option Lotus Notes permettant de spécifier au serveur qu'il ne doit effectuer aucune conversion des données et les envoyer tel que aux clients.
Sélectionnez le texte, puis utilisez le menu
9.
Passons aux éléments d'Items.
Nous les avons listés dans une vue au point 4 de cette recette. Ils sont au four depuis 5 minutes et doivent maintenant être dorés à point.
Placez le curseur sur la ligne suivant la balise </link>, puis utilisez le menu création pour insérer la vue à cet emplacement.
10.
Il ne reste plus qu'à définir les balises de fermeture de la structure de la page RSS.
Du texte affecté au style HTML Relais :
11.
puis enregistrer et fermer la page que vous pouvez désormais référencer où bon vous semble sur le site Web.
Simple non ?
La semaine prochaine, la recette du "Poulet Mayonnaise".
:0)
-







Comments
Posted by Pierre MOYSAN At 23:34:22 On 25/07/2008 | - Website - |
Une petite information complémentaire toutefois : il existe plusieurs formats RSS, un article les décrit ici :
{ Link } (lien trouvé sur wikipédia, je ne fais pas de pub )
Bonne continuation
Posted by Damien At 22:47:28 On 24/07/2008 | - Website - |