1

我正在尝试 使用此验证工具验证此站点地图: http ://animal.org.il/post.xml:http: //www.xmlcheck.com/checkurl.php

我在所有图像上都收到此错误:图像标签:错误 1845:元素“{http://www.google.com/schemas/sitemap-image/1.1}image”:没有匹配的全局元素声明可用,但需要通过严格的通配符。

这是我的站点地图的当前源代码片段,其中显示了其中一些 image:image 标签:

<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="http://animal.org.il/wp-content/plugins/bwp-google-xml-sitemaps/xsl/bwp-sitemap.xsl"?>
<urlset xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://www.sitemaps.org/schemas/sitemap/0.9" xmlns:image="http://www.google.com/schemas/sitemap-image/1.1">

<url>
    <loc>http://animal.org.il/to-be-goose/</loc>
    <lastmod>2012-07-24T09:57:18+00:00</lastmod>
    <changefreq>monthly</changefreq>
    <priority>0.4</priority>
    <image:image>
      <image:loc>http://animal.org.il/wp-content/gallery/goose/goose-nature.jpg</image:loc>
      <image:title>אווז בטבע</image:title>
      <image:caption>אווז בטבע עף על פני מאות קילומטרים מדי שנה, אך בתעשיית הבשר והנוצות הוא לא יזכה לפרוש כנף לעולם.</image:caption>
    </image:image>
    <image:image>
      <image:loc>http://animal.org.il/wp-content/gallery/goose/goose-feathers.jpg</image:loc>
      <image:title>תעשיית הנוצות</image:title>
      <image:caption>אווז ממשש במקורו את העור החשוף לאחר מריטת נוצותיו. מתוך תחקיר על תעשיית ה&lt;a href="http://anonymous.org.il/cat40.html" target="_blank"&gt;נוצות&lt;/a&gt; של הטלוויזיה השוודית (Kalla Fatka, TV4)</image:caption>
    </image:image>
    <image:image>
      <image:loc>http://animal.org.il/wp-content/gallery/goose/goose-foie-gras.jpg</image:loc>
      <image:title>כך מייצרים כבד אווז</image:title>
      <image:caption>על מנת לייצר &lt;a href="http://anonymous.org.il/cat14.html" target="_blank"&gt;כבד אווז&lt;/a&gt;, מפטמים את האווז באמצעות החדרת צינור מתכת לגרונו.</image:caption>
    </image:image>
  </url>
4

1 回答 1

10

默认情况下,您使用的验证服务似乎使用http://www.sitemaps.org/schemas/sitemap/0.9/sitemap.xsd上的站点地图架构来验证站点地图文档。该架构具有与您的image:image元素匹配的通配符,但这些元素在http://www.google.com/schemas/sitemap-image/1.1/sitemap-image.xsd的单独架构文档中声明,而不是在架构中正在使用。正如错误消息所说,所讨论的通配符是“严格”通配符,这意味着它匹配的元素必须在模式中声明。

可能有一种方法可以告诉验证器查阅图像名称空间的模式文档,但我看不到任何明显的方法。您可以向站点地图文档添加一个xsi:schemaLocation属性,因此您的根元素如下所示:

<urlset xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
  xmlns="http://www.sitemaps.org/schemas/sitemap/0.9" 
  xmlns:image="http://www.google.com/schemas/sitemap-image/1.1"
  xsi:schemaLocation="
    http://www.sitemaps.org/schemas/sitemap/0.9
    http://www.sitemaps.org/schemas/sitemap/0.9/sitemap.xsd
    http://www.google.com/schemas/sitemap-image/1.1
    http://www.google.com/schemas/sitemap-image/1.1/sitemap-image.xsd" >

这通常不是告诉模式验证器在哪里找到模式的最佳方法,但它通常有效。但是,在这种情况下不是。

另一方面,对于您上传的文档,您使用的验证服务还允许您上传架构文档。如果您为站点地图和站点地图图像命名空间(如下所示)创建一个仅导入您想要的两个架构文档的架构文档,并将其与站点地图一起上传,则图像元素的错误就会消失。如果您是从 Web 验证站点地图,而不是通过上传它,则可能有另一种方法可以让验证器使用正确的模式;您必须查找文档或向服务的运营商索取信息。

<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">

  <xs:import namespace="http://www.sitemaps.org/schemas/sitemap/0.9"
             schemaLocation="http://www.sitemaps.org/schemas/sitemap/0.9/sitemap.xsd"/>
  <xs:import namespace="http://www.google.com/schemas/sitemap-image/1.1"
             schemaLocation="http://www.google.com/schemas/sitemap-image/1.1/sitemap-image.xsd"/>

</xs:schema>

取而代之的是,您有抱怨该image:caption元素的错误,该元素应该在,而不是在之后image:title。修复后,您的站点地图将被识别为有效。

于 2012-12-30T18:42:59.000 回答