Pourriez-vous m'aider à valider ce flux RSS ?

WRInaute passionné
Bonjour,

J'essaie de créer un flux rss, en fait il s'affiche bien avec magpie, mais le validateur m'indique qu'il est invalide.

Y'a aussi un truc bizarre : j'affiche dix articles, ils sont présents dans le code source, mais sur la page flux_rss.php, seuls 5 s'affichent.

Voici mon code, si vous voulez y jeter un oeil, merci :
Code:
<?php
header('Content-Type: text/html"; charset=iso-8859-1');
require_once('./script/connex.php'); 
echo'
<rss version="2.0">
';

//si c'est la liste des dernières définitions qui est demandée
if(isset($_GET['article']) AND $_GET['article']==0)
{
echo '<channel>'; 
echo '<title>Derniers articles</title>';
echo'<link>http://www.monsite.com</link>';
echo '<description><![CDATA[Nouveaux Articles]]></description>';
$req="SELECT id,titre,contenu FROM articles ORDER BY id DESC LIMIT 0,10 ";
$res=mysql_query("$req");
while($R=mysql_fetch_array($res))
{  
 $art=stripslashes($R['contenu']); 
  // Le nombre le lettres avant les ...
$maxL =150;
if (strlen($art) >= $maxL) 
{$art= substr($art,0,$maxL) . "..." ; };   
$art= strip_tags($art);	
	$titre=stripslashes($R['titre']);
	$id=$R['id'];
	echo '
	<item>
	<link>http://www.monsite.com/'.$R['id'].'.htm</link>

	<title>'.$titre.'</title>	
	
	<description>'.$art.'</description>

	</item>';	
;}//ferme whille
// édition de la fin du fichier XML
echo'</channel>';
;} 

echo '</rss>';
?>

Il y a un autre truc bizarre, quand j'ajoute cette ligne dans les <item>, ça n'affiche plus rien sur la page :
Code:
<guid isPermaLink="true">http://www.monsite.com/'.$R['id'].'.htm</guid>


Ca c'est la liste d'erreur que me renvoie le validateur RSS du W3C :

Code:
This feed does not validate.

    *

      line 53, column 50: Undefined named entity: eacute (4 occurrences) [help]

          	<description>Partie d'une population . Un &eacute;chantillon ...
                                                            ^

In addition, interoperability with the widest range of feed readers could be improved by implementing the following recommendations.

    *

      Feeds should not be served with the "text/html"" media type [help]


    *

      line 12, column 1: item should contain a guid element (10 occurrences) [help]

          	</item>
           ^

    *

      line 90, column 8: Missing atom:link with rel="self" [help]

          	</item></channel></rss>


Merci d'avance pour votre aide.
 
WRInaute impliqué
Pour te prouver que je suis pas rancunier, je vais essayer de t'aider :wink:

En plus du code, il aurait été utile de fournir un lien vers le rss généré, j'ai l'impression que cela provient de caractères invalides provenant de tes données en provenance de ta base, peut être un mauvais encodage.
 
WRInaute accro
Déjà régler ce problème:
Code:
Feeds should not be served with the "text/html"" media type
 
WRInaute accro
Ce serait pas car il manque un <![CDATA[ à <description>'.$art.'</description> ?
 
WRInaute passionné
Oui, alors j'ai essayé ça :

Code:
<description><![CDATA['.$art.']]</description>


Et là plus aucun item ne s'affiche, page blanche, à l'exception du titre et de la description de celle-ci.
 
WRInaute impliqué
Bon je répète ma demande : peut tu nous donner un lien vers le xml généré, ce sera plus facile de voir ou peut se trouver l'erreur !
 
WRInaute passionné
Bah non je peux pas, sinon je l'aurais fait lol

Ce serait plus pratique pour moi aussi, je me taperais pas des copier-collés.
 
WRInaute impliqué
Oui voir le fichier aiderai.

Le type mime doit être : application/rss+xml et pas text/html, c'est un poil logique ça.
 
WRInaute impliqué
pourquoi, pas publier ou problème de contenu non compatible avec la charte de wri? dans le deuxième cas envoie le par mp
 
WRInaute passionné
C'est pas ça, c'est que j'ai plein de bouts de code qui trainent sur le site, je veux pas donner en plus son url, c'est tout. Mais je te remercie pour ton aide.
 
WRInaute passionné
Houla, ça m'avait échappé, merci :oops:

Code:
<rss version="2.0">
<channel>
<title>Derniers articles</title>
<link>http://www.monsite.com</link>
<description><![CDATA[Nouveaux articles proposés sur mon site]]></description>
	
<item>
	<link>http://www.monsite.com/article1.htm</link>
	 <guid isPermaLink="true">http://www.monsite.com/article1.htm</guid>
	<title>titre de l'article </title>	
	<description><![CDATA[150 caractères du premier article...]]</description>
        </item>
	
        <item>
	<link>http://www.monsite.com/article2.htm</link>
	<guid isPermaLink="true">http://www.monsite.com/article2.htm</guid>
	<title>titre de l'article</title>	
	<description><![CDATA[150 premiers caractères de l'article...]]</description>
         </item>
	
</channel>
</rss>

Voilà donc ici j'en ai affiché 2, mais y'en a bien 10 dans le code et comme j'ai dit plus haut, dans certains cas où ça daigne s'afficher, ça n'en affiche de toute façon que 5 (et 10 si j'enlève la balise description).
 
WRInaute passionné
Ok, j'ai utilisé str_replace() pour remplacer les &eacute; et autres &egrave; par des "é" et des "è" etc... Et j'obtiens, grâce à vous, les congratulations du validateur W3C.

Elle mesure donc désormais 1cm de plus, en une seule fois c'est pas ma... Ouhla, je m'égare.




Le validateur m'indique toutefois ceci :

#

Feeds should not be served with the "text/html"" media type [help]


#

line 12, column 1: item should contain a guid element (10 occurrences) [help]

</item>
^

#

line 90, column 8: Missing atom:link with rel="self" [help]

</item></channel></rss>

Mais si j'enlève text/html, ça n'affiche plus rien du tout.
 
WRInaute passionné
Oui mais avec ça, tout le code source s'affiche dans la page.


Mais je retiens ton conseil, la prochaine fois que j'ouvre un topic, promis, je lis les réponses.
 
WRInaute passionné
Le code source oui.

J'utilise firefox. J'ai pas testé sur les autres tiens.




Là j'ai un autre petit soucis, j'allais ouvrir un nouveau topic, mais c'est peut-être pas la peine.

En fait je voudrais ajouter un lien à la fin de la balise description.

Il y a déjà le lien <link> en haut, qui crée le lien sur le titre donc, mais en bas, je voudrais un lien vers une sous-catégorie de l'article. Si je crée le lien dans le code source ça n'affiche plus rien.

J'ai essayé ça au pif, mais ça ne fonctionne pas non plus :
<a type="application/rss+xml" href="souscategorie.php">titre sous catégorie</a>
 
WRInaute passionné
C'est la dernière version de firefox, y'a eu la mise à jour automatique il y a quelque jour.


Je viens d'ajouter le noeud catégorie, mais ça ne s'affiche pas.

<category domain="http://www.domaine.fr/lacategorie.htm">Categorie</category>

C'est parce qu'il y a une extension ?
 
WRInaute passionné
Bah je pourrais le mettre en ligne, suffit que je change le domaine, ceci dit concernant le noeud catégory, il se présente dans le code source comme je l'ai écrit.

Par contre, y'a un accent dedans, c'est peut être ça, mais ça m'étonne parce qu'il n'est pas encodé, j'utilise str_replace() comme sur les autres noeuds.


Bon enfin c'est pas très grave, merci de ton aide (et merci aux autres aussi).
 
WRInaute impliqué
normalement, le code généré doit ressembler à quelque chose comme cela :

Code:
<?xml version="1.0" encoding="utf-8" ?>
<rss version="2">
	<channel>
		<title>Titre de l'item n°1</title>
		<link>URL d'une page décrivant le canal RSS</link>
		<description>Description globale du fil RSS</description>
		<language>fr</language>

		<copyright>Nom de l'éditeur</copyright>
		<webMaster>Adresse électronique de l'éditeur</webMaster>

		<item>
			<title>Titre de l'item n°1</title>
			<description>Description de l'item n°1</description>
			<link>http://url_item1</link>
			<category domain="http://www.domaine.fr/lacategorie.htm">Categorie</category> 
		</item>

		<item>
			<title>Titre de l'item n°2</title>
			<description>Description de l'item n°2</description>
			<link>http://url_item2</link>
			<category domain="http://www.domaine.fr/lacategorie.htm">Categorie</category> 
		</item>

	</channel>
</rss>
 
WRInaute passionné
Ouaip, bah là j'ai un gros os... :eek:

Je viens de tester sur l'infâme péniche Internet Explorer, et lorsque je clique, au lieu de m'afficher la page du flux rss ça... M'ouvre une boite de dialogue qui me propose de télécharger la page "mon-fichier-rss.php" !


C'est quoi cette chose originale ? Ca vient de quoi d'après vous ?! 8O
 
WRInaute accro
IE qui propose de télécharger, c'est à cause du "application/rss+xml" qu'il ne reconnait pas, aucun soucis à se faire.
 
WRInaute passionné
Bah aucun soucis à se faire, sauf que le flux est inutilisable avec IE... lol


Dans le header j'ai text/html, ce serait pas dû à ça plutôt ?


Comme j'ai déjà dit, si je l'enlève ça affiche plus rien ou ça affiche le code source si je marque xml à la place...




La vache, ça fera un bon topic sur les flux rss, pour le prochain...
 
Discussions similaires
Haut