Microdata ItemID для идентификации элементов, разбросанных по HTML-документам/HTML-таблицам

Мой разработчик закодировал список продуктов, используя таблицы HTML. В коде появилось что-то вроде этого:

<table>
<tr  class="name">
<td>Product Name #1</td><td>Product Name #2</td><td>Product Name #3</td>
</tr>
<tr class="price">
<td>Product Price #1</td><td>Product Price #2</td><td>Product Price #3</td>
</tr>
<tr class="brand">
<td>Product Brand #1</td><td>Product Brand #2</td><td>Product Brand #3</td>
</tr>
</table>

Вы получаете идею. Визуально это выглядит отлично, но при попытке разметки через schema.org у меня возникают проблемы, поскольку свойства продуктов не существуют, это аккуратные вложенные элементы HTML, но они распределены по всей таблице. Можно ли использовать атрибут ItemID Microdata, чтобы убедиться, что каждый бренд и цена связаны с правильным названием продукта?

Что-то вроде:

<tr class="name">
<td itemscope itemtype="http://www.schema.org/Product" itemID="Product1">Product Name #1</td>
<td itemscope itemtype="http://www.scema.org/Product" itemID="Product2">Product Name #2</td>

Etc. и т.д. Любые мысли? Будет ли у меня перекодировка страниц для этой работы?

Ответ 1

Да, itemid - верный способ сделать это. Ваш пример будет выглядеть примерно так:

<table>
  <tr class="name">
    <td itemscope itemtype="http://www.schema.org/Product" itemid="Product1">
      <span itemprop="name">Product Name #1</span>
    </td>
    <td itemscope itemtype="http://www.schema.org/Product" itemid="Product2">
      <span itemprop="name">Product Name #2</span>
    </td>
  </tr>
  <tr class="price">
    <td itemscope itemtype="http://www.schema.org/Product" itemid="Product1">
      <div itemprop="offers" itemscope itemtype="http://schema.org/Offer">
        <span itemprop="price">Product Price #1</span>
      </div>
    </td>
    <td itemscope itemtype="http://www.schema.org/Product" itemid="Product2">
      <div itemprop="offers" itemscope itemtype="http://schema.org/Offer">
        <span itemprop="price">Product Price #2</span>
      </div>
    </td>
  </tr>
</table>

Повторно используя один и тот же itemid вы сообщаете анализатору микроданных, что говорите об одном и том же элементе в разных частях страницы.

Ответ 2

На самом деле, itemid не будет правильным способом сделать это. В отличие от RDF, модель синтаксического анализа микроданных не объединяет вещи с одинаковым itemid.

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

Например:

<div itemscope itemtype="http://schema.org/Product" itemref="foo"></div>
<div id="foo" itemprop="offers" itemscope itemtype="http://schema.org/Offer">
  <span itemprop="price">Product Price #1</span>
</div>

Вы можете протестировать микроданные, используя https://webmaster.yandex.com/tools/microtest/ в дополнение к Google.