xml - Zend Framework 站点地图验证

标签 xml validation zend-framework sitemap

当使用 sitemap() view helper 输出 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>

最佳答案

先决条件:
DomDocument::schemaValidate($path) 在 allow_url_fopen 之前不会工作已启用

关于站点地图:
来自 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>

要将这些 header 添加到您的 XML,您首先需要通过 $domDoc = $this->sitemap()->getDomSitemap() 检索 DomDocument 而不是添加额外的 header ,最后 echo $domDoc->saveXml()

在你看来我做这么多似乎不太好,也许一个额外的 ViewHelper 子类 Zend_View_Helper_Navigation_Sitemap 可能适合你。

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

关于xml - Zend Framework 站点地图验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4631415/

相关文章:

c - 使用 atoi() 对整数进行输入验证

java - 使用 JavaCC 解析树表示

PHP 在 XML 中搜索和获取匹配项

javascript - 防止用户在小数点前 2 位数字后输入更多数字

javascript - jQuery:使用 'name_lastName@company.com' 格式的电子邮件验证

zend-framework - 如何从 Zend 验证错误中输出 HTML?

php - 如何从 zend 应用程序重定向到非 zend 链接

php - 在不破坏 Zend Framework 中的默认行为的情况下自动连接表

python - 我怎么能在不使用魔数(Magic Number)的情况下说文件是 SVG?

jquery - 在 JQuery 中使用 Load() 获取 XML 属性