Format du sitemap

WRInaute discret
Bonjour,

Malgré 4 ou 5 tentatives, sitemap continue à me dire son laconique "parsing error" quand il charge mon fichier...

J'ai beau filtrer les entrées suspectes, les caractères bizarres, etc, je n'arrive pas à comprendre ce qui lui déplait dans ce fichier.

Existe-t-il un validateur ?

Merci
 
WRInaute discret
Oui, et je m'en suis inspiré pour pondre mon fichier en l'adaptant à mon cas d'espèces, c'est à dire que j'ai un script de tracking qui me met déjà en bdd les infos sur les url donc je pompe dedans...

Sur le site de mon profil, à la racine, le fichier se nomme educador.xml, mais je n'arrive même pas à l'afficher avec explorer qui me dit erreur...
 
WRInaute discret
Bonjour,

Avez vous bien remplacé le caracère
Code:
&
par la chaîne
Code:
&
? Dans la négative, essayez :wink:

Bien à vous,

Serge
 
WRInaute discret
Voici le bout de mon code qui génère le fichier :
Code:
$f_xml  = "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n";
$f_xml .= "<urlset xmlns=\"https://www.google.com/schemas/sitemap/0.84\">\n";

$liste = mysql_query("SELECT url,date FROM sitemap order by url");
while(list($a,$b) = mysql_fetch_array($liste)) {
	$chaine = $a;
	if (ereg("prev=",$a)) {$a = "none";}
     if (ereg("slideshow",$a)) {$a = "none";}
     if (ereg("about",$a)) {$a = "none";}
     if (ereg("id_srv=",$a)) {$a = "none";}
     if (ereg("search",$a)) {$a = "none";}
     if (ereg("fichier",$a)) {$a = "none";}
     if (ereg("register",$a)) {$a = "none";}
     if (ereg("%3D",$enr[1])) {$enr[1] = "none";}
     if (ereg("#",$a)) {$a = "none";}
     if (ereg("pg=",$a)) {$a = "none";}
     if (ereg("id=",$a)) {if (!ereg("image_id=",$a)) {$a = "none";}}
     if (ereg("expand=",$a)) {if (!ereg("expand=all",$a)) {$a = "none";}}
	if ($a <> "none") {
		if (ereg(".html",$a)) {
		     $chaine = $a;
			$chaine2 = strstr($chaine,".html");
			$chaine2 = ereg_replace(".html","",$chaine2);
			$chaine2 = trim($chaine2);
			if ($chaine2 == '') {
				$chaine = ereg_replace(".html","",$chaine);
				$chaine = ereg_replace("gallery/","",$chaine);
				$chaine2 = substr($chaine,strlen($chaine)-1,1);
				if ($chaine2 <> "-") {
					$chaine = ereg_replace("-"," ",$chaine);
					$chaine = trim($chaine);
				} else {
				     $a = "none";
				}
			}
		}
		if (ereg(".php",$a)) {
		     $chaine = $a;
		     if (ereg("slideshow",$chaine)) {$a = "none";}
		}
	}
	if ($a <> "none") {
		$f_xml .= "<url>\n";
		$f_xml .= "<loc>$a</loc>\n";
		$f_xml .= "<lastmod>$b</lastmod>\n";
		$f_xml .= "<changefreq>daily</changefreq>\n";
		$f_xml .= "<priority>0.5</priority>\n";
		$f_xml .= "</url>\n";
		$i++;
	}
	$j++;
}

$f_xml .= "</urlset>\n";

$h = fopen ("educador.xml","w+");
fwrite($h, $f_xml);
fclose($h);
echo "terminér> $i url sur $j";

par rapport à la proposition de "jouer.org" je n'ai fais qu'ajouter des tests pour filtrer les lignes à évacuer, et j'ai ajouter des \n afin de pouvoir l'éditer...
 
WRInaute discret
J'ai essayé de remplacer les & par &amp; et il semble que du coup explorer le digère mieux ...

Je resubmit et je vous tiens au courant, ça pourra servir à d'autres !
Merci
:)
 
WRInaute discret
Merci de l'info, il semble passer à ce validateur, sauf que la ligne "No declaration for document root found, validation was lax" ne me cause pas vraiment !

D'autre part, suffit-il d'ajouter à la fin :
Code:
$f_xml = utf8_encode($f_xml);
pour que le fichier soit directement codé en UTF8 ?
 
WRInaute discret
Bonjour,

A mon sens, ce ne sera même pas nécessaire dans la mesure où vos liens n'offrent pas de caractères étendus (avec accents etc.). Ce cas de figure se présentant lorsque vous ajoutez des descriptions en utilisant des arguments de type &desc=titre_de_la_page (un espace = _).

Dans ce cas, votre fonction utf8_encode sera de la partie :wink:

Pour le reste, Google ne devrait avoir aucun mal à lire votre fichier.

Bien à vous.
 
WRInaute discret
Rebonjour,

Avant que votre fichier ne soit vérifié par Google, vérifiez et corrigez rapidement le dernier noeud de votre fichier XML, la variable LOC présente un erreur (lien doublé).

Bien à vous.
 
Discussions similaires
Haut