Как сделать так, чтобы ссылка на карту сайта в заголовке страницы проходила валидатор W3C?

Я пытаюсь пропустить страницу через W3C Validator. Проверка терпит неудачу на карте сайта, которую я включаю так:

<link rel="sitemap" type="application/xml" title="Sitemap" href="../sitemap.xml" />

Я получаю ошибку:

Карта сайта с недопустимым значением для атрибута, ссылающегося на элемент: ссылка не является абсолютной IRI. Строка sitemap не является зарегистрированным ключевым словом или абсолютным URL.

Я пытался навсегда это исправить, но ничего, что я пытаюсь, похоже, не работает, плюс это рекомендуемый макет от Google и Html5 Boilerplate.

Что-то не так с моим синтаксисом? Кажется правильным, но почему это не проходит?

5 ответов

Решение

Короткий ответ: вы не можете.

HTML 5 определяет значения, которые вам разрешено использовать в rel а также sitemap не является одним из тех, которые признаны валидатором.

Сообщение об ошибке говорит о том, что вы можете зарегистрировать новый тип ссылки в вики, но карта сайта уже существует, поэтому вам просто нужно подождать, пока разработчики валидатора обновят валидатор, чтобы отразить новое состояние вики (при условии, что никто не удаляет запись).

(Основные проблемы здесь заключаются в том, что наличие спецификации, использующей вики-страницу в качестве нормативного ресурса, является чокнутым, что HTML 5 все еще является черновиком и что валидатор HTML 5 все еще считается экспериментальным).

Заглядывает из будущего (июнь 2021 г.).

Вход:

      <link rel="sitemap" type="application/xml" title="Sitemap" href="/sitemap.xml">

теперь принимается валидатором W3 HTML5

Проверка следующего HTML-файла:

      <!DOCTYPE html>
<html lang="en-gb">
<head>
<meta charset="utf-8">
<title>My Rel Sitemap Test</title>
<link rel="sitemap" type="application/xml" title="Sitemap" href="/sitemap.xml">
</head>

<body>
<h1>My Rel Sitemap Test</h1>
<p>This is my Rel Sitemap Test.</p>
<p>The document passes.</p>
<p>This document is valid HTML5 + ARIA + SVG 2 + MathML 3.0</p>
</body>
</html>

здесь: https://validator.w3.org/nu/

возвращает ответ:

Проверка документов завершена. Никаких ошибок или предупреждений для отображения.

Если вам нужен только валидатор w3c для передачи, возможно, вы могли бы обнаружить его пользовательский агент и изменить выходные данные вашего приложения, чтобы оно прошло. Я считаю, что строгая валидация - это скорее маркетинговая выгода, чем что-либо еще, когда дело доходит до незначительных проблем, подобных этой. Если другие разработчики используют валидатор w3c, чтобы сказать, что веб-сайт вашего клиента полон ошибок, то это раздражает.

Вы можете проверить, содержит ли HTTP_USER_AGENT "W3C_Validator", и удалить нестандартный код.

В CFML я написал такой код, чтобы моя ссылка на авторство Google все еще могла проверяться на валидаторе w3c:

<cfif cgi.HTTP_USER_AGENT CONTAINS "W3C_Validator">data-</cfif>rel="publisher"

Я только что опубликовал вопрос на форуме Google, могут ли они начать поддерживать data-rel или подтвердить, что поиск в Google уже его поддерживает. Предоставляемый им инструмент тестирования структурированных данных не анализирует данные, когда я тестировал его сейчас. http://www.google.com/webmasters/tools/richsnippets

Надеемся, что кто-то ответит: https://groups.google.com/a/googleproductforums.com/d/msg/webmasters/-/g0RDfpFwmqAJ

Строка sitemap не является зарегистрированным ключевым словом или абсолютным URL

Ваша проблема прямо здесь:

href="../sitemap.xml" 

Вы используете родственника URL чтобы указать, где находится ваша карта сайта. Попробуйте поставить что-то вроде этого:

<link rel="sitemap" type="application/xml" title="Sitemap" href="/myfolder/sitemap.xml" />

РЕДАКТИРОВАТЬ

Поскольку роботы сначала сканируют вашу корневую директорию, лучше всего использовать sitemap.xml файл в вашем корневом каталоге:

<link rel="sitemap" type="application/xml" title="Sitemap" href="/sitemap.xml" />

или же

<link rel="sitemap" type="application/xml" title="Sitemap" href="http://yoursite.com/sitemap.xml" /> <!-- No www -->

Также,

Убедитесь, что ваш link тег является ребенком вашего head тег

Попробуй это! Альтернативный атрибут rel распознается также для каналов RSS и ATOM. Я лично использую это для всех документов XML.

Другие вопросы по тегам