2011-01-08 133 views
4

當使用Zend導航sitemap()視圖助手輸出,我得到以下錯誤:Zend框架的Sitemap驗證

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

驗證已開啓:

$this->navigation()->setUseSchemaValidation(true)->setFormatOutput(true); 
  • 如何使有效的XML使用Zend框架的網站地圖?

我的網站地圖看起來是這樣的:

<?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> 

回答

3

前提
的DomDocument :: schemaValidate($ PATH),直到allow_url_fopen啓用

關於Sitemap將無法​​正常工作:
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> 

那些頭添加到您的XML,你首先需要通過$domDoc = $this->sitemap()->getDomSitemap() 檢索DOM文檔不是增加額外的頭終於echo $domDoc->saveXml()

似乎並不高興我做了這麼多你的看法,也許一個額外的ViewHelper子類Zend_View_Helper_Navigation_Sitemap可能適合你。

不幸的是,我從來沒有使用DomDocument,所以我不能幫助設置名稱空間屬性,也許this post會幫助你。

+0

謝謝。我已經添加了這些標題,但我仍然收到相同的錯誤。問題是`setUseSchemaValidation()`需要`allow_url_fopen`指令被啓用,這在我的生產服務器上是默認關閉的。 – takeshin 2011-01-08 09:43:41