web-dev-qa-db-fra.com

Google Webmaster Tools se plaint d'un espace de nom non valide dans mon sitemap

Je ne parviens pas à définir mon sitemap au goût de Google. J'ai du mal à le tester, car je ne peux tester la validité de notre sitemap à l'aide de Google Webmaster Tools, lorsque le code le plus récent a été déployé dans notre environnement de production, ce qui ne peut se produire que toutes les 3 semaines (à chaque sprint). C'est pourquoi je demande ici, au lieu de le tester moi-même.

L'en-tête de mon sitemap généré ressemble à ceci (nouvelle ligne et indentation pour plus de lisibilité):

<?xml version="1.0" encoding="utf-8" standalone="no"?>
<urlset xlmns="http://www.sitemaps.org/schemas/sitemap/0.9"
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">

Lorsque je teste mon sitemap dans Google Webmaster Tools, cela me dit que mon espace de nom n'est pas valide et je ne comprends pas pourquoi.

J'ai trouvé deux articles à ce sujet, n de Google , et n de sitemaps.org . L'exemple d'en-tête de Google ressemble à ceci:

<?xml version="1.0" encoding="UTF-8"?>
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9"> 

et l'exemple de sitemaps.org a cet en-tête:

<?xml version='1.0' encoding='UTF-8'?>
<urlset
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.sitemaps.org/schemas/sitemap/0.9 http://www.sitemaps.org/schemas/sitemap/0.9/sitemap.xsd"
xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">

Le mien ressemble à l'exemple de Google, sauf que j'ai ce schéma supplémentaire include, qui a été recommandé sur un troisième site:

xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

Pourquoi le mien est-il invalide? Est-ce que l'inclusion doit être avant l'espace de noms? Est-ce que cela devrait fonctionner sans ce supplément? Ou ai-je besoin de tout ce qui est tiré de l'exemple d'en-tête sitemap.org et dans cet ordre?

Merci!


SOLUTION

Google est (bien sûr) correct. Voici ce que vous voulez:

<?xml version="1.0" encoding="UTF-8"?>
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
<url>
    <loc>some.url.com</loc>
    -- Additional variables if you want them.
</url>

J'ai fini par utiliser du code comme ceci (je génère le plan du site en C #):

// Create a variable holding the sitemap namespace
XNamespace sitemapNs = XNamespace.Get("http://www.sitemaps.org/schemas/sitemap/0.9");

// Create a new standalone XDocument
var xDocument = new XDocument(new XDeclaration("1.0", "utf-8", "yes"));

// Create the urlset-element
var xElement = new XElement(sitemapNs + "urlset");

// Create a new url-element and add elements to it
var el = new XElement(sitemapNs + "url");
el.Add(new XElement(sitemapNs + "loc", loc));
el.Add(new XElement(sitemapNs + "changefreq", changeFreq));
el.Add(new XElement(sitemapNs + "priority", priority));
el.Add(new XElement(sitemapNs + "lastmod", lastMod));

// Add the url-element to the urlset-element
xElement.Add(el);

// Add the urlset-element to the XDocument
xDocument.Add(xElement);

De toute évidence, je l'ai codé pour pouvoir ajouter facilement plusieurs éléments, et j'ai des méthodes distinctes pour générer l'en-tête et gérer les différents éléments.

2

Cela se produit parce que vous utilisez un espace de noms non valide, l'article que vous avez suivi est obsolète et ne doit jamais être utilisé. Suivez le recommandation du schéma XML du W3C pour supprimer ces erreurs. Plus a expliqué l'emplacement de l'espace de noms .

SOURCE

Espace de noms d'instance de schéma XML Voir la Recommandation de schéma XML pour une introduction

$Date: 2001/03/16 20:25:57 $

$Id: XMLSchema-instance.xsd,v 1.4 2001/03/16 20:25:57 ht Exp $


This schema should never be used as such:
                the XML
                Schema Recommendation forbids the declaration of
                attributes in this namespace

Utilisez quelque chose comme:

<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="//example.com/sitemap.xsl"?>
<sitemapindex xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
2
Simon Hayter