2011-01-08 4 views
4

При выводе Zend навигация с помощью sitemap() вида помощника, я получаю следующее сообщение об ошибке:Zend Framework проверка карты сайта

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 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 :: schemaValidate ($ путь) не будет работать до тех пор, пока allow_url_fopen включен

О Sitemaps :
От 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 в первую очередь необходимо, чтобы получить DomDocument чем добавить дополнительные заголовки, и, наконец echo $domDoc->saveXml()

не кажется, хорошо для меня, чтобы сделать так много, на ваш взгляд через $domDoc = $this->sitemap()->getDomSitemap() , возможно, вам может понадобиться дополнительное подклассу ViewHelper Zend_View_Helper_Navigation_Sitemap.

К сожалению, я еще никогда не работал с DomDocument, поэтому я не могу помочь установить атрибуты пространства имен, возможно, this post поможет вам в этом.

+0

Спасибо. Я добавил эти заголовки, но я все еще получал ту же ошибку. Проблема заключалась в том, что 'setUseSchemaValidation()' требует включения директивы 'allow_url_fopen', которая по умолчанию отключена на моем рабочем сервере. – takeshin

+0

рад помочь, я добавлю свой намек на мой ответ. интересно, я как-то перепробовал эту зависимость в руководстве php –

Смежные вопросы