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>
Author: unor, 2014-03-02

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>

(См. Также мой аналогичный ответ на вопрос о переполнении стека.)

 5
Author: unor, 2017-05-23 12:37:06

Согласно поисковой системе 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>
 2
Author: John R Perry, 2015-09-28 13:35:48

У 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 года.
 1
Author: PatomaS, 2014-03-14 13:29:48