16
Publier un flux RSS depuis une base 4D Par Christophe KEROMEN, Cabinet de Consultants CKTI Note technique 4D-200607-20-FR Version 1 - Date 1 juillet 2006 Résumé Pour compléter la précédente note technique, nous allons nous intéresser dans cette note à l’aspect serveur de flux RSS depuis une application 4D. 4D Notes techniques Copyright © 1985-2009 4D SAS - Tous droits réservés Tous les efforts ont été faits pour que le contenu de cette note technique présente le maximum de fiabilité possible. Néanmoins, les différents éléments composant cette note technique, et le cas échéant, le code, sont fournis sans garantie d'aucune sorte. L'auteur et 4D S.A. déclinent donc toute responsabilité quant à l'utilisation qui pourrait être faite de ces éléments, tant à l'égard de leurs utilisateurs que des tiers. Les informations contenues dans ce document peuvent faire l'objet de modifications sans préavis et ne sauraient en aucune manière engager 4D SA. La fourniture du logiciel décrit dans ce document est régie par un octroi de licence dont les termes sont précisés par ailleurs dans la licence électronique figurant sur le support du Logiciel et de la Documentation afférente. Le logiciel et sa documentation ne peuvent être utilisés, copiés ou reproduits sur quelque support que ce soit et de quelque manière que ce soit, que conformément aux termes de cette licence. Aucune partie de ce document ne peut être reproduite ou recopiée de quelque manière que ce soit, électronique ou mécanique, y compris par photocopie, enregistrement, archivage ou tout autre procédé de stockage, de traitement et de récupération d'informations, pour d'autres buts que l'usage personnel de l'acheteur, et ce exclusivement aux conditions contractuelles, sans la permission explicite de 4D SA. 4D, 4D Calc, 4D Draw, 4D Write, 4D Insider, 4ème Dimension ®, 4D Server, 4D Compiler ainsi que les logos 4e Dimension, sont des marques enregistrées de 4D SA. Windows,Windows NT,Win 32s et Microsoft sont des marques enregistrées de Microsoft Corporation. Apple, Macintosh, Power Macintosh, LaserWriter, ImageWriter, QuickTime sont des marques enregistrées ou des noms commerciaux de Apple Computer,Inc. Mac2Win Software Copyright © 1990-2002 est un produit de Altura Software,Inc. 4D Write contient des éléments de "MacLink Plus file translation", un produit de DataViz, Inc,55 Corporate drive,Trumbull,CT,USA. XTND Copyright 1992-2002 © 4D SA. Tous droits réservés. XTND Technology Copyright 1989-2002 © Claris Corporation.. Tous droits réservés ACROBAT © Copyright 1987-2002, Secret Commercial Adobe Systems Inc.Tous droits réservés. ACROBAT est une marque enregistrée d'Adobe Systems Inc. Tous les autres noms de produits ou appellations sont des marques déposées ou des noms commerciaux appartenant à leurs propriétaires respectifs. 1 / 16

Publier un flux RSS depuis une base 4Ddownload.4d.com/Notes_Techniques/NT/2006/200607-20-ServeurFl… · Un flux RSS est une structure XML respectant un modèle particulier. Pour

  • Upload
    others

  • View
    0

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Publier un flux RSS depuis une base 4Ddownload.4d.com/Notes_Techniques/NT/2006/200607-20-ServeurFl… · Un flux RSS est une structure XML respectant un modèle particulier. Pour

Publier un flux RSS depuis une base 4DPar Christophe KEROMEN, Cabinet de Consultants CKTINote technique 4D-200607-20-FR

Version 1 - Date 1 juillet 2006

RésuméPourcompléterla précédentenotetechnique,nousallonsnousintéresserdanscettenoteà l’aspectserveurdeflux RSS depuis une application 4D.

4D Notes techniquesCopyright © 1985-2009 4D SAS - Tous droits réservés

Tous les efforts ont été faits pour que le contenu de cette note technique présente le maximum de fiabilité possible.Néanmoins, les différents éléments composant cette note technique, et le cas échéant, le code, sont fournis sans garantie d'aucune sorte.L'auteuret 4D S.A. déclinentdonc toute responsabilitéquantà l'utilisation qui pourrait être faite de ces éléments,tant à l'égard de leursutilisateurs que des tiers.

Lesinformationscontenuesdanscedocumentpeuventfaire l'objet de modificationssanspréaviset ne sauraienten aucunemanièreengager4DSA. La fournituredu logiciel décritdanscedocumentestrégiepar un octroi de licencedont les termessontpréciséspar ailleursdansla licenceélectroniquefigurantsurle supportduLogiciel etdela Documentationafférente.Le logiciel et sadocumentationne peuventêtreutilisés, copiésou reproduits sur quelque support que ce soit et de quelque manière que ce soit, que conformément aux termes de cette licence.Aucunepartiede ce documentne peutêtrereproduiteou recopiéede quelquemanièrequece soit, électroniqueou mécanique,y comprisparphotocopie,enregistrement,archivageou toutautreprocédéde stockage,de traitementet de récupérationd'informations,pour d'autresbuts quel'usage personnel de l'acheteur, et ce exclusivement aux conditions contractuelles, sans la permission explicite de 4D SA.4D, 4D Calc,4D Draw,4D Write,4D Insider,4ème Dimension®, 4D Server,4D Compilerainsi queles logos4e Dimension,sontdesmarquesenregistrées de 4D SA.Windows,Windows NT,Win 32s et Microsoft sont des marques enregistrées de Microsoft Corporation.Apple,Macintosh,PowerMacintosh,LaserWriter,ImageWriter,QuickTimesontdesmarquesenregistréesou desnomscommerciauxde AppleComputer,Inc.Mac2Win Software Copyright © 1990-2002 est un produit de Altura Software,Inc.4D Write contient des éléments de "MacLink Plus file translation", un produit de DataViz, Inc,55 Corporate drive,Trumbull,CT,USA.XTND Copyright 1992-2002 © 4D SA. Tous droits réservés.XTND TechnologyCopyright1989-2002© Claris Corporation..Tousdroits réservésACROBAT © Copyright1987-2002,SecretCommercialAdobe Systems Inc.Tous droits réservés. ACROBAT est une marque enregistrée d'Adobe Systems Inc.

Tous les autres noms de produits ou appellations sont des marques déposées ou des noms commerciaux appartenant à leurs propriétairesrespectifs.

1 / 16

Page 2: Publier un flux RSS depuis une base 4Ddownload.4d.com/Notes_Techniques/NT/2006/200607-20-ServeurFl… · Un flux RSS est une structure XML respectant un modèle particulier. Pour

Publier un flux RSS depuis une base 4D

Dans une précédente note technique, nous avons présenté la notion de syndication en particulier sous laforme de flux RSS. Nous avons également réalisé un lecteur 4Dde flux RSS. Pour compléter, cetteprésentation, nous allons dans cette nouvelle note nous intéresser à l’aspect serveur de flux RSS depuis uneapplication 4D.

Elaboration de l’exemple

Conception techniqueUn flux RSS est une structure XML respectant un modèle particulier. Pour générer un flux, nous devonsdonc :

• choisir un moyen de générer du XML ;• choisir le modèle de flux que nous allons respecter.

Pour les différents moyens de générer des structures XML depuis une application 4D, nous vous renvoyonsaux notes techniques parues sur ce sujet :

• Générer du XML avec 4D 2004 – 1ère partie, référence : 4D-200409-27-FR• Générer du XML avec 4D 2004 – 2ème partie, référence : 4D-200410-28-FR

Comme le flux RSS doit être servi par le serveur http interne de 4D, nous effectuons le choix de travailleravec des modèles semi-dynamiques. Cette approche évite de coder la génération de l’arbre XML, maisprésente l’inconvénient de se limiter à un codage de caractères en ISO-8859-1 (ISO-Latin-1).

Nous avons vu dans la note précédente que deux branches de format RSS co-existaient. La version 2.0présentant l’avantage d’une plus grande simplicité, nous l’avons retenue pour cet exemple.

Choix des informations à publierVia le mécanisme de l’élément<link> pour une ressource en ligne ou de l’élément<enclosure> pour lecontenu multimedia, nous sommes en mesure de publier tout type d’information géré par une base 4D.Comme il s’agit d’une note technique, nous avons simplementchoisi de publier un flux RSS listant lesdernières notes techniques parues.Pour cela, nous avons complété l’application 4DKnowledge_184 en 4D version 2004.

Structure de donnéesVoici un extrait de la structure de données de la base avec les tables qui vont nous concerner :

2 / 16

Page 3: Publier un flux RSS depuis une base 4Ddownload.4d.com/Notes_Techniques/NT/2006/200607-20-ServeurFl… · Un flux RSS est une structure XML respectant un modèle particulier. Pour

La table [TECHNOTES] contient les méta-données sur les notes techniques, nous retiendrons les champs :

• [TECHNOTES]Title : le titre de la note• [TECHNOTES]Ref4D : la référence de la note• [TECHNOTES]Summary : le résumé de la note• [TECHNOTES]ID : l’identifiant unique.

La publication s’effectuera sur les 20 dernières notes techniques parues.

Le contenu de la note s’obtient par relation vers la table [ZONESWRITE]. Plusieurs enregistrements peuventcorrespondre à un enregistrement [TECHNOTES]. Pour simplifier, nous ne considérerons que le premierenregistrement lié. La note technique au format 4D Write estcontenue dans le champ[ZONESWRITE]ZoneNT. 4D Write nous permettra une conversion aisée en HTML.

Pour récupérer les auteurs (plusieurs auteurs peuvent avoir collaborer sur une note), l’application utilise laméthode BuildAuthorsNames et concatène les noms d’auteurs dans la variable interprocess<>NomAuteurs. Il nous suffit de recopier cette méthode en utilisant cettefois une variable process pourobtenir notre liste d’auteurs et garantir un fonctionnement multi-process correct.

Modèle de flux XML semi-dynamiqueLa première étape de notre publication consiste à créer un modèle semi-dynamique qui, traité par le serveurhttp, générera automatiquement notre flux XML-RSS.

3 / 16

Page 4: Publier un flux RSS depuis une base 4Ddownload.4d.com/Notes_Techniques/NT/2006/200607-20-ServeurFl… · Un flux RSS est une structure XML respectant un modèle particulier. Pour

Voici le code source de ce modèle :

<?xml version="1.0" encoding="ISO-8859-1"?><rss version="2.0"><channel> <title>4D 2004 exemple de publication RSS</title><link>http://<!--#4DVAR rss_vt_local_IP-->/4DAction/rss_Home</link><language>fr</language><managingEditor><!--#4dvar rss_vt_author--></managingEditor><description>Exemple de publication RSS avec 4D 2004</description><pubDate><!--#4dvar rss_vt_pubDate--></pubDate><generator>4eme Dimension 2004</generator><docs>http://blogs.law.harvard.edu/tech/rss</docs><image><title>4D 2004 exemple de publication RSS</title><link>http://<!--#4DVAR rss_vt_local_IP-->/4DAction/RSS_Home</link><url>http://<!--#4DVAR rss_vt_local_IP-->/images/4dlogo.gif</url> </image>

<!--#4dloop [TECHNOTES]--><!--#4dscript/rss_BuildAuthorsNames/-->

<item><pubDate><!--#4dscript/rss_getPubDate/--></pubDate><author><!--#4dvar rss_vt_Author--></author><title><!--#4dvar [TECHNOTES]Title-->/<!--#4dvar [TECHNOTES]Ref4D-->/<!--#4dvar rss_vt_NomAuteurs--></title><description><!--#4dvar [TECHNOTES]Summary--></description><link>http://<!--#4DVAR rss_vt_local_IP-->/4DAction/rss_nt_html/id=<!--#4dvar [TECHNOTES]ID--></link><guid>http://<!--#4DVAR rss_vt_local_IP-->/4DAction/rss_nt_html/id=<!--#4dvar [TECHNOTES]ID--></guid></item><!--#4dendloop-->

</channel>

</rss>

Pour en comprendre le fonctionnement, il faut distinguer deux parties :

• les méta-données sur le<channel>, constituées par tous les premiers enfants de<channel> jusqu’à</image>

• la liste des items publiés, un item par note technique. Notre modèle décrit seulement un item encadré parune boucle 4D :

<!--#4dloop [TECHNOTES]--> Structure d’un item

<!--#4dendloop-->.

Le code compris entre ces deux balises sera répété autant de fois que nous aurons d’enregistrements dansnotre sélection [TECHNOTES].

Pour connaître la signification des différents champs de channel, se reporter au lien déjà mentionné dans lanote précédente : http://www.stervinou.com/projets/rss/#sampleFiles .Notons simplement que nous devrons gérer l’appel décrit dans <link> afin d’afficher le site Web HTMLcorrespondant au <channel>.:<link>http://<!--#4DVAR rss_vt_local_IP-->/4DAction/rss_Home</link>

La variable rss_vt_local_IP contient l’adresse IP du serveur de flux RSS.

4 / 16

Page 5: Publier un flux RSS depuis une base 4Ddownload.4d.com/Notes_Techniques/NT/2006/200607-20-ServeurFl… · Un flux RSS est une structure XML respectant un modèle particulier. Pour

Dans la structure<item>, nous ne pouvons écrire le nom des auteurs dans l’enfant<author>. En effet, cechamp doit contenir une adresse email. C’est pourquoi, nousy insérons la variablerss_vt_Author quicontient l’adresse email de la personne responsable des notes techniques chez 4D.

Utilisation de l’élément <enclosure>Rappelons que l’élément <item> peut également comprendre un enfant facultatif <enclosure>.

Voici ce que nous indique la page citée plus haut :

<enclosure> est un sous-élément facultatif de <item>.Il possède trois attributs obligatoires :url dit où l'enclosure est située,length dit quelle taille elle fait en octets,et type dit quel est son type, un standard type MIME.L'url doit être une url http.<enclosure url="http://www.scripting.com/mp3s/weatherReportSuite.mp3" length="12216320" type="audio/mpeg" /> »

L’exemple indiqué permet de retrouver une ressource mp3, mais il est possible de pointer sur un autre typede fichier, par exemple un BLOB exporté depuis 4D. Par ce mécanisme, il serait possible de proposer autéléchargement les bases exemples accompagnant la note technique. Une autre possibilité serait de proposerune version PDF de la note.

Méthode appelée : rss_serverPublish

Le lecteur appelle la méthode rss_serverPublish grâce à la balise 4DACTION . Voici son code source :

` Methode : rss_serverPublish

` Description : ` routine appelée par un lecteur de flux RSS, renvoi le flux RSS `127.0.0.1/4dAction/rss_ServerPublish/news.rss ` ` Parametres : ` $1:TEXTE:parametre ` ` Version : 1 ` Appel : rss_serverPublish(parametre) ` ---------------------------------------------------- C_TEXTE($1)

Si ($1="/news.rss")

`on renvoie les 20 dernières NTTOUT SELECTIONNER([TECHNOTES])TRIER([TECHNOTES];[TECHNOTES]Date;<)REDUIRE SELECTION([TECHNOTES];20)Si (Indefinie(<>rss_vt_locaIP))

rss_surOuverture Sinon

Si (<>rss_vt_locaIP="")rss_surOuverture

Fin de si Fin de si

C_TEXTE(rss_vt_local_IP)rss_vt_local_IP:=<>rss_vt_locaIP

5 / 16

Page 6: Publier un flux RSS depuis une base 4Ddownload.4d.com/Notes_Techniques/NT/2006/200607-20-ServeurFl… · Un flux RSS est une structure XML respectant un modèle particulier. Pour

`date de publicationC_TEXTE(rss_vt_pubDate)C_HEURE($tiTime)$tiTime:=Heure couranteC_DATE($sgmtDate)C_HEURE($sgmtTime)rss_vt_pubDate:=AP Timestamp to GMT (Date du jour;$tiTime;$sgmtDate;$sgmtTime)

C_TEXTE(rss_vt_author)rss_vt_author:="[email protected]"

Si (Faux)ENVOYER FICHIER HTML("rss_nt.xml")

Sinon `on passe par un BLOB pour pouvoir effectuer des traitements supplémentaires

C_TEXTE($_vt_rssModel)$_vt_rssModel:=rss_get_DossierWeb +"rss_nt.xml"

C_BLOB($_vx_blobRSS)DOCUMENT VERS BLOB($_vt_rssModel;$_vx_blobRSS)TRAITER BALISES HTML($_vx_blobRSS;$_vx_blobRSS)

`les résumés contiennent des caractères qui posent problème, on les remplace avant l'envoiC_BLOB($_vx_blobReplace)TEXTE VERS BLOB("&apos;";$_vx_blobReplace;Texte sans longueur )ZBLOB_ReplaceTag (->$_vx_blobRSS;"&#146;";->$_vx_blobReplace)

ENVOYER BLOB HTML($_vx_blobRSS;"text/xml")Fin de si

Fin de si

La routine rss_surOuverture se charge de différentes initialisations, dont l’adresse IP du serveur.Dans une première version, nous avions tenté d’envoyer simplement le modèle xml :ENVOYER FICHIERHTML ("rss_nt.xml"), ce qui a pour effet de déclencher le traitement par 4D des balises HTML. Mais cela setraduisait par un échec lors de la tentative de validation duflux car les textes contenaient des caractèresinvalides pour le codage considéré. Il nous a donc fallu passer par un BLOB intermédiaire, effectuer letraitement des balises par la commandeTRAITER BALISES HTML , effectuer les remplacements dans leBLOB, puis envoyer le BLOB final.

RésultatVoici un extrait du flux XML résultant :

6 / 16

Page 7: Publier un flux RSS depuis une base 4Ddownload.4d.com/Notes_Techniques/NT/2006/200607-20-ServeurFl… · Un flux RSS est une structure XML respectant un modèle particulier. Pour

Affichage dans un lecteur de flux

7 / 16

Page 8: Publier un flux RSS depuis une base 4Ddownload.4d.com/Notes_Techniques/NT/2006/200607-20-ServeurFl… · Un flux RSS est une structure XML respectant un modèle particulier. Pour

Affichage dans Vienna sur MacOSX

Vienna est un agrégateur de syndication compatible RSS et Atom. Il s’agit d’un projetopensourcepourMacOSX, vous pouvez le trouver ici :http://www.opencommunity.co.uk/vienna2.php

Validation du fluxNous avions vu qu’il existait des sites de validation de fluxRSS, nous avons donc soumis le résultat produità http://validator.w3.org/ :

Le flux RSS généré est valide

Lien vers la note complèteLa balise <link>, enfant d’item, contient un lien qui doit déclencher l’affichage de la note techniquecorrespondante sous forme d’une page HTML :<link>http://192.168.1.10/4DAction/rss_nt_html/id=334</link>

Pour ce faire nous appelons la méthode rss_nt_html en lui passant en paramètre l’id de note.

` Methode : rss_nt_html

` Description : ` envoie la note technique sous forme HTML ` ` Parametres : ` $1:TEXTE:/id=id NT ` ` Version : 1 ` Appel : rss_nt_html("/id=id NT")

8 / 16

Page 9: Publier un flux RSS depuis une base 4Ddownload.4d.com/Notes_Techniques/NT/2006/200607-20-ServeurFl… · Un flux RSS est une structure XML respectant un modèle particulier. Pour

` ----------------------------------------------------

C_TEXTE($1) `rss_nt_html/id=329

Si ($1#"/images@") `demande de la page elle-mêmeC_ENTIER LONG($_vl_idNT)$_vl_idNT:=Num(Sous chaine($1;Position("id=";$1)+Longueur("id=")))LECTURE SEULEMENT([ZONESWRITE])CHERCHER([ZONESWRITE];[ZONESWRITE]Technote_ID=$_vl_idNT)Si (Enregistrements trouves([ZONESWRITE])>0)

Si (Vrai) `l'enregistrement du BLOB write au format HTMLC_TEXTE($_vt_htmlPath)$_vt_htmlPath:=Dossier 4D+"NT"+FILE_PlateformSeparator Si (Tester chemin acces($_vt_htmlPath)#Est un répertoire )

CREER DOSSIER($_vt_htmlPath)Fin de si $_vt_htmlPath:=$_vt_htmlPath+"nt"+Chaine($_vl_idNT)+"_"

+Chaine(Nombre de millisecondes)+".html"C_ENTIER LONG($_vl_refZone)$_vl_refZone:=WR Hors ecran WR BLOB VERS ZONE ($_vl_refZone;[ZONESWRITE]ZoneNT)WR SAUVER DOCUMENT ($_vl_refZone;$_vt_htmlPath;"HTML")WR DETRUIRE HORS ECRAN ($_vl_refZone)

Fin de si

ENVOYER FICHIER HTML($_vt_htmlPath)

Fin de si

Sinon `demande d'une image de la page `http://192.168.1.10/4DAction/rss_nt_html/images/nt328_354859749001.jpg

`envoi d'une image de lpage HTMLC_BLOB($_vx_blob)C_TEXTE($_vt_htmlPath)$_vt_htmlPath:=Dossier 4D+"NT"+FILE_PlateformSeparator +

Sous chaine($1;Position("/images/";$1)+1)$_vt_htmlPath:=Remplacer chaine($_vt_htmlPath;"/";FILE_PlateformSeparator )DOCUMENT VERS BLOB($_vt_htmlPath;$_vx_blob)ENVOYER BLOB HTML($_vx_blob;"image/jpeg")

Fin de si

Cette méthode comprend deux cas. Dans le premier, nous recherchons le premier enregistrement [ZONESWRITE] correspondant à la notetechnique souhaitée, puis nous effectuons la transformation en HTML. La page correspondante est stockéedans un sous-dossier du dossier 4D :

$_vt_htmlPath:=Dossier 4D+"NT"+FILE_PlateformSeparator

Ce dossier sera supprimé par un appel à rss_surFermeture lors de la fermeture de l’application.

Lors de la conversion en HTML, 4D Write créé un sous-dossier Images dans lequel il enregistre au formatJPEG les images présentes dans la note technique. Ces imagessont référencées dans le document HTMLsous forme de liens :http://192.168.1.10/4DAction/rss_nt_html/images/nt328_354859749001.jpg.

9 / 16

Page 10: Publier un flux RSS depuis une base 4Ddownload.4d.com/Notes_Techniques/NT/2006/200607-20-ServeurFl… · Un flux RSS est une structure XML respectant un modèle particulier. Pour

Le traitement d’un appel de ce type constitue le deuxième casde notre méthode afin de charger l’imagecorrespondante dans un BLOB, puis de la renvoyer vers le client HTTP.

Nettoyage lors de la fermeture de l’applicationLors de la fermeture de l’application, la méthode base ‘Sur fermeture’ appellerss_surFermeturepoursupprimer le dossier contenant nos notes techniques converties en HTML.Attention, l’utilisation de la commandeSUPPRIMER DOSSIER n’est pas suffisante, car elle ne permet desupprimer qu’un dossier vide de contenu !

` Methode : rss_surFermeture

` Description : ` appelé sur femeture de l'application ` pour nettoyer le dossier des pages HTML ` ` Parametres : ` ` ` Version : 1 ` Appel : rss_surFermeture ` ----------------------------------------------------

C_TEXTE($_vt_html)$_vt_html:=Dossier 4D+"NT"+FILE_PlateformSeparator Si (Tester chemin acces($_vt_html)=Est un répertoire )

FILE_DeleteFolder ($_vt_html)

Fin de si

Note : la méthodeFILE_DeleteFolder présentait un bug, il faut donc utiliser la version corrigéeprésentedans le dossier RSS.

Lien vers le site completLe lien <link>, enfant de<channel>, doit nous amener vers le site Web affichant en HTML les informationslistées dans le flux RSS :<link>http://192.168.1.10/4DAction/rss_Home</link>

Aspect HTML de la liste des notes techniques

10 / 16

Page 11: Publier un flux RSS depuis une base 4Ddownload.4d.com/Notes_Techniques/NT/2006/200607-20-ServeurFl… · Un flux RSS est une structure XML respectant un modèle particulier. Pour

La liste de toutes les notes techniques de la base de données est présentée, triée par date décroissante.

Méthode rss_HomeNous devons créer une méthode rss_Home appelée par 4DAction et dont voici le source :

` Methode : Méthode : rss_Home

` Description : ` affichage HTML de toutes les notes techniques de la base ` ` Parametres : ` $1:TEXTE:vide ` ` Version : 1 ` Appel : http://192.168.1.10/4DAction/rss_Home ` ---------------------------------------------------- C_TEXTE($1)

Si (Indefinie(<>rss_vt_locaIP))rss_surOuverture

Fin de si C_TEXTE(rss_vt_local_IP)rss_vt_local_IP:=<>rss_vt_locaIP

LECTURE SEULEMENT([TECHNOTES])TOUT SELECTIONNER([TECHNOTES])TRIER([TECHNOTES];[TECHNOTES]Date;<)

ENVOYER FICHIER HTML("rss_nt_full.shtm")

Cette méthode, très simple, effectue la sélection des notestechniques, initialise les variables process utiliséespar balises 4DVAR et renvoie la page semi-dynamique "rss_nt_full.shtm".

11 / 16

Page 12: Publier un flux RSS depuis une base 4Ddownload.4d.com/Notes_Techniques/NT/2006/200607-20-ServeurFl… · Un flux RSS est une structure XML respectant un modèle particulier. Pour

Modèle semi-dynamiqueVoici le modèle semi-dynamique utilisé :

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"><html><head><title>Liste des notes techniques</title><meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"></head>

<body><h1 align="center"><img src="/images/4D_Rss.gif" width="39" height="53"><strong> Liste des notes techniques </strong></h1> <!--#4dloop [TECHNOTES]-->

<!--#4dscript/rss_BuildAuthorsNames/--><Table width="100%" border="0"> <tr> <td width="10%"> <strong>Titre :</strong></td>

<td width="60%"><a href="http://<!--#4DVAR rss_vt_local_IP-->/4DAction/rss_nt_html/id=<!--#4dvar [TECHNOTES]ID-->"><!--#4dvar [TECHNOTES]Title--></a></td>

<td width="10%"><div align="right"><strong>Ref4D :</strong></div></td> <td width="20%"> <!--#4dvar [TECHNOTES]Ref4D--> </td> </tr> <tr> <td><strong>Date :</strong></td> <td> <!--#4dvar [TECHNOTES]Date--> </td> <td><div align="right"><strong>Auteurs :</strong></div></td> <td><!--#4DVAR rss_vt_NomAuteurs---></td> </tr></Table><!--#4dvar [TECHNOTES]Summary--><hr>

<!--#4dendloop-->

<br></body>

</html>

Rien de particulier non plus dans cette page semi-dynamiqueclassique dont l’analyse et le traitement seronteffectués automatiquement par le serveur http de 4D.

Installation dans 4D Knowledge.4DB

Recopie des éléments requis

Aucun formulaire n’est utilisé. Il suffit :• de transférer via 4D Insider les méthodes du dossier RSS de la librairie rss.4IL dans votre version de 4D

Knowledge.4DB,

12 / 16

Page 13: Publier un flux RSS depuis une base 4Ddownload.4d.com/Notes_Techniques/NT/2006/200607-20-ServeurFl… · Un flux RSS est une structure XML respectant un modèle particulier. Pour

• de recopier le dossier « DossierWeb » auprès de 4D Knowledge.4DB

Contenu de DossierWeb

• puis d’effectuer les vérifications décrites au paragraphe suivant.

Paramétrage du serveur http

Pour que tout cela fonctionne, il faut que le serveur http et les méthodes utilisées soient paramétréesconvenablement.

Méthodes accédés par le serveur httpRappelons que toutes les méthodes sollicités par le serveurhttp doivent, en version 2004, être paramétréesexplicitement en cochant « Disponible via 4DACTION, 4DMETHOD et 4DSCRIPT » dans leurs propriétés :

13 / 16

Page 14: Publier un flux RSS depuis une base 4Ddownload.4d.com/Notes_Techniques/NT/2006/200607-20-ServeurFl… · Un flux RSS est une structure XML respectant un modèle particulier. Pour

Ces méthodes sont ensuite reconnaissables à leur icône particulière dans l’explorateur :

DossierWebDans la version originale de l’application, la racine HTML par défaut se nommait « WebFolder »,remplaçons-la par « DossierWeb » pour compatibilité avec nos méthodes.

14 / 16

Page 15: Publier un flux RSS depuis une base 4Ddownload.4d.com/Notes_Techniques/NT/2006/200607-20-ServeurFl… · Un flux RSS est une structure XML respectant un modèle particulier. Pour

Vérification dans un client riche

La société Adobe propose un outil de création de client richeInternet : Flex. Cet environnement permet deréaliser des applications aux interfaces évoluées s’exécutant dans le contexte d’un navigateur grâce au pluginFlash player dans sa version 9 : www.adobe.com/fr/products/flex/.Il est très simple avec cet outil de créer un lecteur de flux RSS qui affiche les données publiées par notreapplication. Si vous travaillez en local, il vous suffit de saisir l’URL suivante dans le navigateur pour voir unexemple :http://127.0.0.1/BlogReader.html

Et le client riche affiche le flux RSS :

15 / 16

Page 16: Publier un flux RSS depuis une base 4Ddownload.4d.com/Notes_Techniques/NT/2006/200607-20-ServeurFl… · Un flux RSS est une structure XML respectant un modèle particulier. Pour

Conclusion

Dans cette deuxième note sur les flux RSS, nous avons montré comment publier un flux depuis uneapplication 4D existante. Vous pouvez ainsi constater qu’il s’agit d’une opération technique assez simple.Dans les mois qui suivent, nous devrions donc assister à une forte augmentation des publications RSS depuisdes applications 4D !

16 / 16