Проверка карты сайта Zend Framework - PullRequest
4 голосов
/ 08 января 2011

При выводе Zend Navigation с использованием sitemap() view helper я получаю следующую ошибку:

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>

1 Ответ

3 голосов
/ 08 января 2011

Предварительное условие :
DomDocument :: schemaValidate ($ path) не будет работать до тех пор, пока не будет включена allow_url_fopen

О файлах сайта :
С http://www.sitemaps.org/protocol.php#validating

Чтобы проверить файл индекса Sitemap или индекса Sitemap по схеме, для файла XML потребуются дополнительные заголовки, как показано ниже.

<?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 с помощью $domDoc = $this->sitemap()->getDomSitemap(), затем добавить дополнительные заголовки и, наконец, echo $domDoc->saveXml()

мне не кажется приятным делать так много с вашей точки зрения, может быть, вам подойдет дополнительный подкласс ViewHelper Zend_View_Helper_Navigation_Sitemap.

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

...