扩展站点地图

时间:2014-02-04 12:25:54

标签: xml xsd sitemap

我有一个包含sitemap.xml文件的网站。目前,我的sitemap.xml文件如下所示:

<?xml version="1.0" encoding="utf-8"?>

<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
  <url>
    <loc>http://www.mysite.com/about/blog/post-1</loc>
    <lastmod>2013-08-13</lastmod>
    <changefreq>never</changefreq>
    <blog:title>This is the title of the blog post</blog:title>
    <blog:description>This is the description of the blog post</blog:description>
    <blog:author>Some person</blog:author>
    <blog:authorUrl>https://www.mysite.com/people/some-person</blog:authorUrl>    
  </url>
</urlset>

正如我上面的代码段所示,我正在尝试扩展我的站点地图。我正在使用extending the sitemaps protocol部分中sitemaps.org上详述的方法。

我创建了一个名为blog.xsd的.xsd文件。该文件位于http://www.mysite.com/data/blog.xsd。该文件如下所示:

<?xml version="1.0"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
  <xs:simpleType name="title">
    <xs:restriction base="xs:string" />
  </xs:simpleType>

  <xs:simpleType name="description">
    <xs:restriction base="xs:string" />
  </xs:simpleType>

  <xs:simpleType name="author">
    <xs:restriction base="xs:string" />
  </xs:simpleType>

  <xs:simpleType name="authorUrl">
    <xs:restriction base="xs:string" />
  </xs:simpleType>  
</xs:schema>

我想弄清楚如何在我的站点地图文件中引用blog.xsd。目前,Google网站管理员工具会在我的sitemap.xml上标记警告。我的警告说:“此标签无法识别。请修复并重新提交。”警告是参考标题,描述,作者和authorUrl标签。我怀疑这是因为我的sitemap.xml文件没有引用blog.xsd。但是,我不知道该怎么做。有人可以提供一个例子吗? sitemaps.org上的文档不是很清楚。谢谢!

1 个答案:

答案 0 :(得分:4)

我的提示是阅读XML和名称空间;它将帮助您更好地理解这样的主题。

正如您在sitemap documentation中所看到的,您可以在自己的命名空间中使用自己的元素扩展站点地图。您缺少xml中的一个关键部分:尽管您在元素上使用了命名空间前缀blog:,但您从未声明过命名空间前缀blog

在站点地图文档中,您会看到:

<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"
     xmlns:example="http://www.example.com/schemas/example_schema"> <!-- namespace extension -->

这是最后一部分, xmlns:example="http://www.example.com/schemas/example_schema" 至关重要。

您需要为您的博客前缀提供名称空间uri。它只需看起来像一个URL,它实际上不需要存在。让我们使用http://www.mysite.com/data/blog/1.0 - 你也可以使用其他任何东西。

然后您的站点地图变为:

<?xml version="1.0" encoding="utf-8"?>

<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9" 
        xmlns:blog="http://www.mysite.com/data/blog/1.0">
  <url>
    <loc>http://www.mysite.com/about/blog/post-1</loc>
    <lastmod>2013-08-13</lastmod>
    <changefreq>never</changefreq>
    <blog:title>This is the title of the blog post</blog:title>
    <blog:description>This is the description of the blog post</blog:description>
    <blog:author>Some person</blog:author>
    <blog:authorUrl>https://www.mysite.com/people/some-person</blog:authorUrl>    
  </url>
</urlset>

根据站点地图文档,这应该足够了。

如果您还希望能够使用XML架构验证程序验证站点地图XML,则可以将<urlset更改为:

<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9" 
        xmlns:blog="http://www.mysite.com/data/blog/1.0"
        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
                            http://www.mysite.com/data/blog/1.0 
                            http://www.mysite.com/data/blog.xsd">