2011-01-08 9 views
4

Bei der Ausgabe von Zend Navigation sitemap() View Helfer verwenden, erhalte ich folgende Fehlermeldung:Zend Framework Sitemap Validierung

Sitemap is invalid according to XML Schema at "http://www.sitemaps.org/schemas/sitemap/0.9/sitemap.xsd" 

Die Validierung eingeschaltet ist:

$this->navigation()->setUseSchemaValidation(true)->setFormatOutput(true); 
  • Wie valide xml machen Sitemap mit Zend Framework?

Meine Sitemap sieht wie folgt aus:

<?xml version="1.0" encoding="UTF-8"?> 
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9"> 
    <url> 
    <loc>http://example.com/index/index/slug/news</loc> 
    </url> 
    <url> 
    <loc>http://example.com/strona/test-page</loc> 
    </url> 
    <url> 

    <loc>http://example.com/strona/test-submenu</loc> 
    </url> 
    <url> 
    <loc>http://example.com/strona/subpage-submenu</loc> 
    </url> 
    <url> 
    <loc>http://example.com/strona/test-submenu-1</loc> 

    </url> 
    <url> 
    <loc>http://example.com/feed/list</loc> 
    </url> 
    <url> 
    <loc>http://example.com/default/sitemap</loc> 
    </url> 
</urlset> 

Antwort

3

Voraussetzung:
DomDocument :: schemaValidate ($ path) wird nicht funktionieren, bis allow_url_fopen aktiviert ist

Über Sitemaps :
Von http://www.sitemaps.org/protocol.php#validating

In order to validate your Sitemap or Sitemap index file against a schema, the XML file will need additional headers as shown below.

<?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"> 
    <url> 
     ... 
    </url> 
</urlset> 

diese Header zu Ihrem XML müssen Sie zuerst hinzufügen, um die DomDocument über $domDoc = $this->sitemap()->getDomSitemap() als fügen Sie die zusätzlichen Header und echo $domDoc->saveXml()

scheinen nicht nett zu mir so viel zu tun in Ihrer Sicht schließlich abrufen , möglicherweise ist eine zusätzliche ViewHelper-Unterklasse von Zend_View_Helper_Navigation_Sitemap für Sie geeignet.

Leider habe ich noch nie mit DomDocument gearbeitet, daher kann ich nicht mit der Einstellung der Namespace-Attribute helfen, vielleicht hilft Ihnen this post dafür.

+0

Danke. Ich habe diese Header hinzugefügt, aber ich bekam immer noch den gleichen Fehler. Das Problem war, dass 'setUseSchemaValidation()' die 'allow_url_fopen' Direktive aktiviert, die standardmäßig auf meinem Produktionsserver deaktiviert ist. – takeshin

+0

glücklich zu helfen, ich werde Ihren Hinweis zu meiner Antwort hinzufügen. Interessanterweise habe ich diese Abhängigkeit im php-Handbuch irgendwie überlesen –