Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

Fil RSS

0 views
Skip to first unread message

Pascale

unread,
Feb 9, 2011, 6:22:14 AM2/9/11
to
Je suis en train de tenter de cr�er un fil RSS sur l'un de mes sites.
Les informations sont lues table MySQL.
Ce qui me pose probl�me, c'est le champ nomm� ��contenu�� dans ma table.
Au moment de l'insertion dans la table (faite par un programme en PHP), je
mets :

$contenu = Ici mon texte '.$donnee1.' et l� aussi '.$donnee2.' et l�, la
fin du texte';

Le morceau de fonction qui ajoute ce champ contenu dans le fichier XML est
fait ainsi :

$desc = $parent->createElement("description");
$desc = $item->appendChild($desc);
$text_desc = $parent->createTextNode(utf8_encode($contenu));
$text_desc = $desc->appendChild($text_desc);

Mon probl�me est que j'aimerais mettre un chou�a de mise en forme (tr�s peu
de chose, un b�te balise <strong></strong> suffirait).

J'ai donc tent� de mettre par exemple :

$contenu = Ici mon texte <strong>'.$donnee1.'</strong> et l� aussi
'.$donnee2.' et l�, la fin du texte';

Mais si je mets des balises, elles ne sont pas interpr�t�es, elles
ressortent telles quelles dans le fil RSS. Il est donc clair que je ne fais
pas du tout ce qu'il faut, mais j'aimerais savoir comment m'y prendre,
justement...

--
Pascale
http://www.la-grille-verte.net

Mickaël Wolff

unread,
Feb 9, 2011, 7:27:30 AM2/9/11
to
On 09/02/11 11:22, Pascale wrote:
> Je suis en train de tenter de cr�er un fil RSS sur l'un de mes sites.
Quelle variante XML utilises-tu ?

> Mais si je mets des balises, elles ne sont pas interpr�t�es, elles
> ressortent telles quelles dans le fil RSS.

Puisque tu utilises DOMDocument, je suppose que <strong> devient
&lt;strong&gt;

> Il est donc clair que je ne fais
> pas du tout ce qu'il faut, mais j'aimerais savoir comment m'y prendre,
> justement...

Je n'ai jamais fait de flux RSS. Mais il m'est avis que si tu veux
utiliser du HTML, du dois d�clarer un namespace XHTML et g�rer les
namespace (RDF et XHTML). Mais peut-�tre qu'on peut utiliser les styles
en RDF ou Atom ?

Pascale

unread,
Feb 9, 2011, 7:43:24 AM2/9/11
to
Mickaël Wolff <mickae...@laposte.net> écrivait
news:4d52882e$0$18785$426a...@news.free.fr:

> Puisque tu utilises DOMDocument, je suppose que <strong> devient
> &lt;strong&gt;

Oui, si j'utilise la fonction htmlentities, c'est ce qui arrive... mais à
la sortie, le résultat est le même.



> Je n'ai jamais fait de flux RSS. Mais il m'est avis que si tu veux

> utiliser du HTML, du dois déclarer un namespace XHTML et gérer les
> namespace (RDF et XHTML). Mais peut-être qu'on peut utiliser les styles

> en RDF ou Atom ?

Pour l'instant, je m'en tiens au RSS, c'est bien assez compliqué pour moi
(Atom a l'air pire).
Dans le head de mon programme (celui qui génère le flux RSS), j'ai mis :
<link rel="alternate" type="application/rss+xml" title="emplacement du
titre" href="news_FR_flux.xml" />
et il se peut bien, en effet, que le type ne convienne pas.

--
Pascale
http://www.la-grille-verte.net

Mickaël Wolff

unread,
Feb 9, 2011, 9:06:53 AM2/9/11
to
On 09/02/11 12:43, Pascale wrote:
>> Puisque tu utilises DOMDocument, je suppose que<strong> devient
>> &lt;strong&gt;
>
> Oui, si j'utilise la fonction htmlentities, c'est ce qui arrive... mais à
> la sortie, le résultat est le même.

C'est vrai que l'implémentation du DOM dans PHP es tun peu bancale à
ce niveau là.

$doc->createTextElement('<strong>') ; // les chevrons sont échapés
$doc->createElement('p', '<script>alert("haha")</script>'); // Misère!

> Pour l'instant, je m'en tiens au RSS, c'est bien assez compliqué pour moi
> (Atom a l'air pire).

Mais non :o)

> Dans le head de mon programme (celui qui génère le flux RSS), j'ai mis :
> <link rel="alternate" type="application/rss+xml" title="emplacement du
> titre" href="news_FR_flux.xml" />
> et il se peut bien, en effet, que le type ne convienne pas.
>

Déjà il y a deux version de RSS. En fait, je confonds pas mal tout
ça. Je pensais que RSS était le format général, mais en fait c'est une
application de RDF. C'est pour ça que je te demandais si tu voulais
faire du RDF ou de l'Atom.

Bon, en fait il semblerait que les lecteurs de flux RSS interprète
les sections CDATA incluent dans les éléments description comme étant du
HTML. Je n'ai pas cherché plus avant si c'est un comportement défini par
la norme.

Un petit exemple que je me suis fait :

=== 8< ===
<?php

$doc = new domdocument('1.0', 'UTF-8') ;
$doc->formatOutput = true ; // J'aime l'indentation
// Création du nœud racine du document RDF dans le namespace rdf
$root =
$doc->createElementNS('http://www.w3.org/1999/02/22-rdf-syntax-ns#',
'rdf:RDF') ;
// On définit le namespace anonyme comme correspondant à RSS
$root->setAttribute('xmlns', 'http://purl.org/rss/1.0/') ;

$channel = $doc->createElement('channel') ;
$channel->setAttribute('rdf:about', 'http://www.xml.com/xml/news.rss') ;
$es = array
( 'title' => 'Grand news'
, 'link' => 'http://example.com/mega-news'
) ;
foreach($es as $n => $c)
{
$e = $doc->createElement($n, $c) ;
$channel->appendChild($e) ;
}

// On insère le HTML via une section CDATA
$content = $doc->createCDataSection('Some <strong>incredible</strong>
stuff!') ;
$desc = $doc->createElement('description') ;
$desc->appendChild($content) ;
$channel->appendChild($desc) ;

$root->appendChild($channel) ;
$doc->appendChild($root) ;

header('Content-type: application/rss+xml; charset=utf-8') ;
echo $doc->saveXML() ;
=== >8 ===

Mickaël Wolff

unread,
Feb 9, 2011, 9:22:17 AM2/9/11
to
On 09/02/11 14:06, Micka�l Wolff wrote:

D'ailleurs, quelques liens :
http://web.resource.org/rss/1.0/spec#s7
http://www.altova.com/technote16.html

Pascale

unread,
Feb 9, 2011, 10:23:40 AM2/9/11
to
Mickaël Wolff <mickae...@laposte.net> écrivait
news:4d529f7a$0$10734$426a...@news.free.fr:

> Déjà il y a deux version de RSS. En fait, je confonds pas mal tout
> ça. Je pensais que RSS était le format général, mais en fait c'est une
> application de RDF. C'est pour ça que je te demandais si tu voulais
> faire du RDF ou de l'Atom.

D'accord, je comprends !

> Bon, en fait il semblerait que les lecteurs de flux RSS interprète
> les sections CDATA incluent dans les éléments description comme étant
> du HTML. Je n'ai pas cherché plus avant si c'est un comportement
> défini par la norme.

Rhâââ, oui, que chuis bête, j'ai vu ça quelque part, qu'il fallait utiliser
CDATA, il faut que je fasse quelques recherches.

> Un petit exemple que je me suis fait :[...]

Et bien dis donc, pour quelqu'un qui n'a jamais fait de fil RSS, tu sais
faire (-:
Je pense que je vais trouver mon bonheur là dedans, je donnerai des
nouvelles selon mon degré de réussite... ou de non réussite ! (:

--
Pascale
http://www.la-grille-verte.net

Mickaël Wolff

unread,
Feb 9, 2011, 11:29:48 AM2/9/11
to
On 09/02/11 15:23, Pascale wrote:
>
> Rhâââ, oui, que chuis bête, j'ai vu ça quelque part, qu'il fallait utiliser
> CDATA, il faut que je fasse quelques recherches.
Il faut dire qu'on peut considérer ça comme un bricolage, ce n'est
donc pas évident. J'aurais préféré avoir la nécessité d'utiliser un
namespace. Au moins, on serait certain que le contenu est bien
interprété comme de l'HTML. Surtout qu'à la base, une section CDATA
n'est pas censée être intérprétée comme ça.

> Et bien dis donc, pour quelqu'un qui n'a jamais fait de fil RSS, tu sais
> faire (-:

Oui, finalement c'était pas si compliqué (je reculais pensant que ce
serait la misère). Merci ;)

Pascale

unread,
Feb 9, 2011, 12:21:13 PM2/9/11
to
Micka�l Wolff <mickae...@laposte.net> �crivait
news:4d52c0fa$0$7829$426a...@news.free.fr:

> Oui, finalement c'�tait pas si compliqu� (je reculais pensant que ce
> serait la mis�re). Merci ;)

Moi, par contre, je rame (comme d'habitude, oui, je sais...)... J'ai essay�
d'int�grer tes suggestions dans mon code. �a donne :

$desc = $parent->createElement("description");
$desc = $item->appendChild($desc);

$text_desc = $parent->createCDataSection(utf8_encode($contenu));
$text_desc = $desc->appendChild($text_desc);

Si je regarde mon fichier XML, j'ai :

<description><![CDATA[d�but du texte <b>texte qui devrait �tre en gras</b>
la fin du texte]]></description>

Je n'ai pas de balises qui tra�nent mais... celles-ci sont purement et
simplement ignor�es.

Grmbl. Et dire qu'Atom est r�put� encore plus compliqu�...

--
Pascale
http://www.la-grille-verte.net

Pascal Poncet

unread,
Feb 9, 2011, 12:36:34 PM2/9/11
to
Le 09/02/2011 12:22, Pascale a �crit :

> Mais si je mets des balises, elles ne sont pas interpr�t�es, elles
> ressortent telles quelles dans le fil RSS. Il est donc clair que je ne fais
> pas du tout ce qu'il faut, mais j'aimerais savoir comment m'y prendre,
> justement...

Bonsoir PascalE,

Je ne suis pas plus sp�cialiste de la chose que l'ami Micka�l mais :

1. Si tu g�n�re un fichier XML statique correspondant aux news, quelle
t�te a-t-il ?

2. Tu peux d�j� le valider dans un truc comme [http://feedvalidator.org/]


--
Cordialement,
Pascal

Pascale

unread,
Feb 9, 2011, 12:50:34 PM2/9/11
to
Pascal Poncet <poncet.pas...@gmail.com.invalid> écrivait
news:iiujdg$en$1...@speranza.aioe.org:

> Je ne suis pas plus spécialiste de la chose que l'ami Mickaël mais :
>
> 1. Si tu génère un fichier XML statique correspondant aux news, quelle
> tête a-t-il ?

Et bien par exemple :

<?xml version="1.0" encoding="iso-8859-15"?>
<rss version="2.0">
<channel>
<description>Ici la description du
site</description><link>http://www........</link><title>Titre du
site</title>
<item>
<title>Titre de la niouze</title>
<description><![CDATA[Texte de la niouze <b>texte qui devrait être en
gras</b> fin du texte de la niouzes]]></description>
<link>http://www.....</link>
<author>...</author>
<source>.....</source>
</item>
</channel>
</rss>

> 2. Tu peux déjà le valider dans un truc comme [http://feedvalidator.org/]

Merci, je ne savais pas que ça existait !

--
Pascale
http://www.la-grille-verte.net

Pascal Poncet

unread,
Feb 9, 2011, 1:13:23 PM2/9/11
to
Le 09/02/2011 18:50, Pascale a écrit :
> Et bien par exemple :
>
> <?xml version="1.0" encoding="iso-8859-15"?>
> <rss version="2.0">
> <channel>
> <description>Ici la description du
> site</description><link>http://www........</link><title>Titre du
> site</title>
> <item>
> <title>Titre de la niouze</title>
> <description><![CDATA[Texte de la niouze<b>texte qui devrait être en
> gras</b> fin du texte de la niouzes]]></description>
> <link>http://www.....</link>
> <author>...</author>
> <source>.....</source>
> </item>
> </channel>
> </rss>

Heu... je n'ai pas de problème avec cet exemple, le gras est bien
affiché dans FF3 !?

Je l'ai enregistré sous le nom "rss.xml" et ouvert tel quel.
Ton fichier généré est statique ou dynamique ?
Je veux dire par là : tu enregistres physiquement un fichier xml sur ton
serveur, ou tu fournis un lien vers une ressource construite en temps
réel par un script php ?
Dans le deuxième cas, tu as peut-être un problème de 'Content-Type'.


--
Cordialement,
Pascal

Pascale

unread,
Feb 9, 2011, 1:35:21 PM2/9/11
to
Pascal Poncet <poncet.pas...@gmail.com.invalid> écrivait
news:iiulih$6om$1...@speranza.aioe.org:

> Heu... je n'ai pas de problème avec cet exemple, le gras est bien
> affiché dans FF3 !?
>
> Je l'ai enregistré sous le nom "rss.xml" et ouvert tel quel.
> Ton fichier généré est statique ou dynamique ?
> Je veux dire par là : tu enregistres physiquement un fichier xml sur ton
> serveur, ou tu fournis un lien vers une ressource construite en temps
> réel par un script php ?
> Dans le deuxième cas, tu as peut-être un problème de 'Content-Type'.

C'est un script PHP qui construit le fil RSS en temps réel.

En effet, je viens de tester avec IE et avec Safari, et je vois bien les
caractères gras... mais je ne les vois pas avec Opera ! Or je suis abonnée
à un autre fil de discussion où il y a un peu de mise en forme que je vois
parfaitement avec Opera... bizarre !

Merci à tous pour votre aide, je vais tâcher d'améliorer un peu la mise en
forme de ce fil RSS et j'espère que ça ira !

--
Pascale
http://www.la-grille-verte.net

Pascale

unread,
Feb 13, 2011, 9:25:51 AM2/13/11
to
Pascal Poncet <poncet.pas...@gmail.com.invalid> écrivait
news:iiujdg$en$1...@speranza.aioe.org:

>
> 2. Tu peux déjà le valider dans un truc comme [http://feedvalidator.org/]

Grmbl, naturellement, mon fil n'est pas valide.

http://www.la-grille-verte.net/kekcestruc/kek_flux.xml

Vu que je n'ai pas pondu le code PHP moi-même, j'ai du mal à l'adapter...

Dans la fonction qui crée le fichier XML, j'ai :
...
// Création du noeud channel
$element_channel = $fich_xml->createElement("channel");//On crée un élément
channel
$element_channel->setAttribute("id", "news"); //On donne un attribut id à
notre channel
$element_channel->setIdAttribute("id", TRUE);
$element_channel = $root->appendChild($element_channel);//On ajoute cet
élément à la racine
...

La fonction d'ajout de chaque niouze commence ainsi :
...
//On récupère le channel
$element_channel = $fich_xml->getElementById("news");

Ce qui provoque la 1ère erreur signalée par le validateur. Là, je comprends
ce que me dit la validateur, mais je ne sais pas réparer.

Je suis allée voir http://feed2.w3.org/docs/rss2.html mais je ne comprends
pas les 3 erreurs suivantes.

Pour la balise <author>, l'exemple donné est :
http://feed2.w3.org/docs/rss2.html#ltauthorgtSubelementOfLtitemgt

Or j'ai utilisé ce modèle :
$element_author = $fich_xml->createElement("author");
$element_author = $element_item->appendChild($element_author);
$text_author = $fich_xml->createTextNode("administration AT la-grille-
verte.net (La Grille Verte)");
$text_author = $element_author->appendChild($text_author);

(évidemment avec un @ au lieu de « AT ») et ça ne va encore pas.

Ensuite, le validateur me dit que <item> doit contenir un élément <guid>.
Or http://feed2.w3.org/docs/rss2.html#ltguidgtSubelementOfLtitemgt dit que
l'élément <guid> est optionnel !

Et enfin, la dernière erreur signalée est « Missing atom:link with
rel="self"  ». Qu'est-ce que Atom vient faire là dedans ?

J'avoue être un peu paumée...
--
Pascale
http://www.la-grille-verte.net

0 new messages