Zend Framework站点地图验证

时间:2011-01-08 00:01:22

标签: xml validation zend-framework sitemap

使用sitemap()视图助手输出Zend Navigation时,出现以下错误:

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

启用验证:

$this->navigation()->setUseSchemaValidation(true)->setFormatOutput(true);
  • 如何使用Zend Framework呈现有效的xml站点地图?

我的站点地图如下所示:

<?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 个答案:

答案 0 :(得分:3)

前提条件
在启用allow_url_fopen之前,DomDocument :: schemaValidate($ path)将无效

关于站点地图
来自http://www.sitemaps.org/protocol.php#validating

  

为了验证您的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,首先需要通过$domDoc = $this->sitemap()->getDomSitemap()检索DomDocument 而是添加其他标题,最后是echo $domDoc->saveXml()

对你来说,在你的视图中做这么多看起来并不好看,也许一个额外的ViewHelper子类Zend_View_Helper_Navigation_Sitemap可能适合你。

不幸的是我还没有使用过DomDocument,所以我无法帮助设置命名空间属性,也许this post可以帮助你。