2011-01-08 22 views
4

sitemap()ビューヘルパーを使用してZendのナビゲーションを出力する場合、私は次のエラーを取得する:Zend Frameworkのサイトマップの検証

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

検証がオンになっている:

有効なXMLをレンダリングする方法
$this->navigation()->setUseSchemaValidation(true)->setFormatOutput(true); 
  • Zend Frameworkを使用したサイトマップ?

マイマップは、次のようになります。

<?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 :: allow_url_fopenはサイトマップについて

を有効にするまでのschemaValidate($パス)が動作しません
から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> 

追加ヘッダを追加するよりも、$domDoc = $this->sitemap()->getDomSitemap() 経由DOMDOCUMENTを取得するためにあなたのXMLもし最初のニーズにこれらのヘッダを追加し、最終的にecho $domDoc->saveXml()

doesntのは、あなたのビューでそんなにを行うために私に素敵に見えますおそらく、Zend_View_Helper_Navigation_Sitemapをサブクラス化する追加のViewHelperが適切かもしれません。

残念ながら私はまだDomDocumentを使ったことがないので、名前空間の属性を設定することはできません。おそらくthis postが役に立ちます。

+0

ありがとうございました。私はそれらのヘッダーを追加しましたが、私はまだ同じエラーが発生していました。問題は 'setUseSchemaValidation()'が 'allow_url_fopen'指示文を有効にする必要があり、これは私のプロダクションサーバではデフォルトではオフになっています。 – takeshin

+0

喜んで助けてください、私はあなたのヒントを私の答えに加えます。興味深いことに私は何とかこの依存関係をphpマニュアル –

関連する問題