Schema.org Разметка элемента SiteNavigationElement
Следует ли Schema.org SiteNavigationElement
быть структурированным следующим образом
<div itemscope itemtype="http://www.schema.org/SiteNavigationElement">
<ul>
<li itemprop="url"><a href="#" itemprop="name">Link 1</a>
</ul>
</div>
Или вот так?
<div itemscope itemtype="http://www.schema.org/SiteNavigationElement">
<ul>
<li>
<a href="#" itemprop="url"><span itemprop="name">Link 1</span></a>
</li>
</ul>
</div>
3 answers
Ваши вопросы, похоже, следующие:
- Могу ли я указать
itemprop="url"
наli
? - Могу ли я указать
itemprop="name"
наa
?
Ответ на оба этих вопроса таков: Нет, вы не должны этого делать. Микроданные определяют специальные правила синтаксического анализа для таких элементов, как a
.
Schema.org ’с url
свойство ожидает URL-адрес в качестве значения. Микроданные определяют, что вы должны использовать такие элементы, как a
/area
/link
/ и т.д. ( по существу любой элемент с src
или href
атрибут) для указания URL-адресов. В вашем первом примере значением свойства url
будет не URL-адрес, а текст "Ссылка 1".
Поскольку свойства элементов a
(если у них есть атрибут href
) всегда принимают содержимое href
(а не содержимое элемента) в качестве значения, в вашем первом примере URL-адрес будет иметь значение для name
свойство (но оно ожидает текст, а не URL, конечно).
Итак: Ваш первый пример приведет к неправильному результаты. Ваш второй пример прекрасен.
Обратите внимание, что также можно было бы опустить элемент span
. Вместо
<li>
<a href="#" itemprop="url"><span itemprop="name">Link 1</span></a>
</li>
Вы могли бы использовать
<li itemprop="name">
<a href="#" itemprop="url">Link 1</a>
</li>
(См. Также мой аналогичный ответ на вопрос о переполнении стека.)
Согласно поисковой системе Land , это должно выглядеть так:
<ul itemscope itemtype="http://www.schema.org/SiteNavigationElement">
<li itemprop="name">
<a itemprop="url" href="#">Link 1</a>
</li>
<li itemprop="name">
<a itemprop="url" href="#">Link 2</a>
</li>
<li itemprop="name">
<a itemprop="url" href="#">Travel Resources</a>
</li>
</ul>
У SiteNavigationElement есть проблема для меня, а также для некоторых других людей, как мы видим в вопросе, опубликованном @bybe в комментарии. мы можем сказать, что проблема заключается в отсутствии масштаба.
Является элементом SiteNavigationElement, относящимся к одному элементу навигационной системы, и поэтому он читается как: Элемент навигации Сайта. Или он относится ко всей навигационной системе, и поэтому он читается как: Навигационный элемент Сайт
<!DOCTYPE html>
<html>
<head>
<title>test</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
</head>
<body>
<div itemscope itemtype="http://schema.org/WebPageElement">
<link itemprop="additionalType" href="http://schema.org/ItemList" />
<meta itemprop="name" content="navigation_menu" />
<ul>
<li itemprop="additionalType" itemscope itemtype="http://www.schema.org/SiteNavigationElement">
<span itemprop="itemListElement">
<a href="http://www.example.com/link_1" itemprop="url"><span itemprop="name">Link 1</span></a>
</span>
</li>
<li itemprop="additionalType" itemscope itemtype="http://www.schema.org/SiteNavigationElement">
<span itemprop="itemListElement">
<a href="http://www.example.com/link_2" itemprop="url"><span itemprop="name">Link 2</span></a>
</span>
</li>
</ul>
</div>
</body>
</html>
, что немного сложнее, поскольку не только рассматривает каждого члена навигационной системы как элемент, заслуживающий тега, но также требует комбинированного синтаксиса, используя Дополнительный тип, чтобы передать идею о том, что эти ссылки представляют собой список элементов, которые принадлежат чему-то.
Обновление
Я изменил коды в этом ответе на приведенную выше версию, чтобы адаптировать его к способу, который работает и проверяется как микроданные и HTML. В истории издания из вопроса вы можете увидеть варианты, которые я использовал раньше. Я заменил эти коды, потому что
- У меня была ошибка в первой части, при использовании свойства, в котором должен быть тип. Хотя инструмент тестирования структурированных данных проверил его без ошибок
- Опция HTML, проверенная нормально, но, как я уже упоминал, способ достижения этого нарушает метод анализа микроданных, считывающий только последний элемент.
- На момент написания этого сообщения, похоже, не существует способа иметь два типа в одном тип элемента. Это можно проверить на веб-схемах W3C/additionaltypeproposal, хотя они не обновлялись с мая 2013 года.