2012-06-19 1 views
8

Мой разработчик закодировал список продуктов, используя таблицы HTML. В коде появилось что-то вроде этого:Microdata ItemID для идентификации элементов, разбросанных по таблицам 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, но они распределены по всей таблице. Будет ли способ использовать атрибут Microdata ItemID, чтобы убедиться, что каждый бренд и цена связаны с правильным названием продукта?

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

<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> 

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

ответ

6

Да, 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, вы говорите микроданный анализатор, что вы говорите о том же самом пункте в разных частях страницы.

+0

[ 'itemid'] (http://www.w3.org/TR/2013/NOTE-microdata-20131029/# attr-itemid) «должно иметь значение, которое является допустимым URL». – unor

+0

@unor relative URLS являются действительными товарами –

+0

А, это верно. – unor

6

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

Вместо этого вы должны использовать атрибут 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> 

Вы можете проверить микроданных с помощью http://foolip.org/microdatajs/live/