2014-02-04 4 views
3

У меня есть сайт, содержащий файл sitemap.xml. В настоящее время мой файл sitemap.xml выглядит следующим образом:Расширение Sitemap

<?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> 

Как мой сниппет выше показывает, что я пытаюсь расширить свою карту сайта. Я использую подход, подробно описанный на sitemaps.org в разделе extending the sitemaps protocol.

Я создал файл .xsd, названный blog.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 в моем файле Sitemap. В настоящее время инструмент Google для веб-мастеров помещает мой файл sitemap.xml с предупреждениями. В моем предупреждении сказано: «Этот тег не был распознан. Исправьте его и отправьте повторно». Предупреждение относится к тегам заголовка, описания, автора и authorUrl. Я подозреваю, что это связано с тем, что файл sitemap.xml не ссылается на blog.xsd. Однако я не знаю, как это сделать. Может ли кто-нибудь подать пример? Документация на sitemaps.org не очень ясна. Спасибо!

ответ

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", что имеет решающее значение.

Вам нужно придумать URL-адрес пространства имен для префикса вашего блога. Он должен выглядеть только как 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">