Почему моя разметка itemprop = 'image' неверна?

9

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

Чтобы попытать счастья, я добавил больше разметки в свой последний пост, но инструмент тестирования структурированных данных Google (SDTT) недоволен itemprop='image'атрибутами, и я не уверен, почему.

Ошибки структурированного инструмента тестирования

Страница результатов .

Насколько я понимаю, игнорируя весь промежуточный код, я структурировал данные следующим образом:

<div itemscope='itemscope' itemtype='http://schema.org/BlogPosting'>
  <div itemprop='articleBody'>
    <a href="1.png" itemprop="url"><img itemprop="image sharedContent" src="1.png" /></a>
    <a href="2.png" itemprop="url"><img itemprop="image sharedContent" src="2.png" /></a>
    <a href="3.png" itemprop="url"><img itemprop="image sharedContent" src="3.png" /></a>
  </div>
</div>

И это выглядит правильно для меня. BlogPostingможет иметь свойства articleBodyи в imageсоответствии с https://schema.org/BlogPosting , но в соответствии с SDTT:

Атрибут itemtype имеет недопустимое значение.

Действительно, я только что попробовал SDTT с приведенным выше примером кода, и он не в состоянии проверить.

Пример кода в SDTT

Так что я явно что-то упускаю. Что я делаю неправильно?

Кен Шарп
источник
Некоторые ссылки в этом вопросе были удалены, поскольку они не являются необходимыми для ответа на вопрос.
Джон Конде
Почему тогда широко используемые теги были удалены?
Кен Шарп

Ответы:

15

schema.org/BlogPosting изображение позволяет ImageObject и URL, однако Google разрешает только ImageObject , поэтому погрешность. Предполагаемая разметка:

<!-- my code -->
<div itemprop="image" itemscope itemtype="http://schema.org/ImageObject">
  <img src="image.jpg" itemprop="url">
</div>

               

Другое несоответствие - schema.org/ImageObject рекомендует contentUrl, но Google рекомендует url, поэтому мое использование выше.


В ответ на код вашего комментария ваша структура по-прежнему неверна. Я возьму это построчно:

<!-- your code -->
<div itemscope='itemscope' itemtype='http://schema.org/BlogPosting'>

Незначительный момент, но если вы не переходите на XHTML, itemscope='itemscope'это неправильно. Используйте itemscope(как вы сделали позже).

<!-- your code -->
  <div itemprop='articleBody'>
    <div itemscope itemtype="http://schema.org/ImageObject"/>

Ваш ImageObject является дочерним по отношению к свойству articleBody, но вы не связали его таким образом. Например, у вас есть articleBody без связанных свойств и не связанный объект ImageObject. Вы должны использовать

<!-- my code -->
    <div itemprop="image" itemscope itemtype="http://schema.org/ImageObject">

Кроме того, />это неверно, даже если вы пытаетесь использовать XHTML, так как у этого элемента есть дочерние элементы и закрытие </div>. Просто используйте, >как я включил в приведенный выше фрагмент.

<!-- your code -->
      <a href="1.png" itemprop="url"><img itemprop="image sharedContent" src="1.png" /></a>

Что делает sharedContent здесь? sharedContent ожидает CreativeWork при использовании в качестве свойства SocialMediaPosting - никогда не в качестве свойства ImageObject и никогда в img.

Ваш другой фрагмент кода, который размещает свойство sharedContent, как показано ниже, также неверен.

<!-- your code -->
<div itemscope='itemscope' itemtype='http://schema.org/BlogPosting'>
  <div itemprop='articleBody'>
    <div itemprop='sharedContent'>
      <div itemscope itemtype="http://schema.org/ImageObject"/>

Хотя sharedContent теперь находится в нужном месте, он все равно должен быть CreativeWork. Ваши объекты ImageObject по-прежнему не связаны с BlogPosting, как показывает инструмент тестирования структурированных данных.

                                          

Ниже приведен правильный код.

<!-- my code -->
<div itemscope itemtype="http://schema.org/BlogPosting">
  <div itemprop="articleBody">
    <div itemprop="image" itemscope itemtype="http://schema.org/ImageObject">
      <a href="1.png" itemprop="url"><img itemprop="image" src="1.png"></a>
    </div>
    <div itemprop="image" itemscope itemtype="http://schema.org/ImageObject">
      <a href="2.png" itemprop="url"><img itemprop="image" src="2.png"></a>
    </div>
    <div itemprop="image" itemscope itemtype="http://schema.org/ImageObject">
      <a href="3.png" itemprop="url"><img itemprop="image" src="3.png"></a>
    </div>
  </div>
</div>
Г.Р.Г.
источник
Понимаю. Добавление ImageObjectне удается с sharedContentпомощью дочернего элемента: pastebin.com/cSgVZNyE . Удаление sharedContentделает его счастливым: pastebin.com/rieWwSM6 . Оборачивание каждого imageв родительский объект sharedContent( pastebin.com/AmpBDqJs ) подтверждает правильность, но это потому, что Google STDD просто игнорирует его? STDD вполне счастлив , если contentURLиспользуется , а также : pastebin.com/23wBvx8F . Похоже, я сделал это правильно, а Google сделал это неправильно? Это должно быть первым. 😉 Я думаю, я могу успокоить их всех, добавив все соответствующие теги. Спасибо! Ken
Кен Шарп
1
@Ken Смотрите мои изменения для моего отзыва о вашем коде.
grg
TS использует тип базового шаблона Blogger, поэтому он не сможет использовать ваш код без изменения всего шаблона. Изменения должны быть сделаны на уровне шаблона, а не на уровне структурированных данных.
Евгений
Еще раз спасибо @grgarside. Вы, безусловно, правы sharedContent- я использовал это все неправильно. Я удалил это сейчас. Еще раз посмотрев на схему, я не вижу необходимости использовать ее в CreativeWork. Просто проигнорируйте />, это было напечатано в спешке, и оригинальный код XHTML. Я просто смешал два в моем примере (отсюда две версии itemscope). Окончательный код правильный, честный! Ken
Кен Шарп
@Evgeniy Шаблон редактируется, иначе он не будет работать вообще. Мой первоначальный вопрос содержал ссылки, которые любой мог легко проверить, но две Wallies теперь отредактировали ссылки, и мне надоело их редактировать. Итак, здесь я еще раз объясняю, как и предсказывал, что мне придется.
Кен Шарп
2

У меня была похожая проблема с Google Structured Data Tester, помечающей мои изображения как недействительные. Видимо, он не принимает изображения, где источником является локальный домен. Как только я развернул на промежуточном сервере, структурированная разметка прошла проверку.

Майк
источник