Разметка микроданных с помощью mainEntityOfPage для Google Article Rich Snippet

Пример микроданных статьи Google Rich Snippet содержит это meta элемент с Schema.org's mainEntityOfPage имущество:

<meta itemscope itemprop="mainEntityOfPage"  itemType="https://schema.org/WebPage" itemid="https://google.com/article"/>

При проверке с помощью Nu Html Checker я получаю эту ошибку:

Элемент meta отсутствует обязательный атрибут content,

Добавление пустого content Атрибут, кажется, решить эту ошибку. Правильно ли это делать?

1 ответ

Решение

Проверка Nu Html верна, пример Google недействителен. content атрибут обязателен, если meta элемент имеет itemprop приписывать.

Из WHATWG HTML, а также HTML 5.1 (W3C Working Draft): "Если […] itemprop указывается, то content атрибут также должен быть указан."
Из старых микроданных (примечание W3C): "Если meta элемент имеет itemprop атрибут, […] content атрибут должен присутствовать."

Добавление пустого content Атрибут делает его действительным, но есть и другие варианты.


Schema.org-х mainEntityOfPage свойство ожидает в качестве значения либо URL, либо CreativeWork вещь.

В собственной документации Google по рекомендуемым / требуемым свойствам для их статьи Rich Snippet говорится, что они ожидают значение URL, но их примеры показывают, как создать значение элемента.

Все следующие решения подойдут для инструмента тестирования структурированных данных Google. (Некоторые примеры используют itemid атрибут, который, строго говоря, еще не разрешен / не определен для словаря Schema.org.)

Если вы хотите указать значение URL:

<link itemprop="mainEntityOfPage" href="https://example.com/article" />

Непосредственная.

Это следует за собственной рекомендацией Google, требует минимальной разметки и работает в head так же хорошо как body,

Если у вас есть видимая ссылка, вы также можете использовать a элемент.

Если вы хотите указать стоимость товара:

Как тип вы можете использовать CreativeWork или любой из его подтипов, как WebPage,

div элемент + url имущество

<div itemprop="mainEntityOfPage" itemscope itemtype="http://schema.org/WebPage">
  <link itemprop="url" href="https://example.com/article" /> 
</div>

Это создает WebPage предмет с url имущество. Может использоваться только в body,

Если у вас есть видимая ссылка, вы также можете использовать a элемент.

meta элемент с пустым content атрибут и itemid

<meta itemprop="mainEntityOfPage" content="" itemscope itemtype="http://schema.org/WebPage" itemid="https://example.com/article" />

Это основано на примере Google, но с пустым content атрибут, чтобы сделать его действительным.

Обратите внимание, что анализаторы микроданных должны игнорировать content атрибут в этом случае, потому что itemscope предоставляется атрибут ( Микроданные W3C Примечание / WHATWG HTML Микроданные: "первый соответствующий случай"). Итак itemprop значением будет элемент, а не строка.

Это создает пустой элемент с идентификатором. Работает в head так же хорошо как body, Это не позволяет добавлять свойства непосредственно к этому WebPage элемент (вам нужно создать еще один элемент с тем же itemid значение).

div элемент с itemid

<div itemprop="mainEntityOfPage" itemscope itemtype="http://schema.org/WebPage" itemid="https://example.com/article">
</div>

Это создает пустой элемент с идентификатором. Вместо meta Например, это работает только в body, но, следовательно, позволяет добавлять дополнительные свойства непосредственно к этому WebPage вещь.

Если у вас уже есть WebPage вещь:

Если вы уже предоставили WebPage элемент на вашей странице, например,

<body itemscope itemtype="http://schema.org/WebPage">

  <article itemscope itemtype="http://schema.org/Article">
  </article>

</body>

Вы можете использовать его через микроданные itemref атрибут:

<body itemprop="mainEntityOfPage" itemscope itemtype="http://schema.org/WebPage" id="this-page">

  <article itemscope itemtype="http://schema.org/Article" itemref="this-page">
  </article>

</body>

в сочетании с одним из методов, описанных выше, например, с itemid или url имущество.

Обратите внимание, что вы обычно используете обратное свойство mainEntity в таком случае, но Google не документирует, что они поддерживают его для статьи Rich Snippet, в настоящее время.

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