2015-07-27 6 views
1

Я добавляю Microdata на сайт и задаюсь вопросом, на каком уровне должно появиться свойство itemprop.Microdata itemprop на родительском div с детьми

К примеру, у меня есть следующий код:

<div itemscope itemtype="http://schema.org/Article"> 
    <div class="author"> 
     <a href="http://www.author.com">Author's Name</a> 
    </div> 
</div> 

Где должен itemprop идти, в a элемент непосредственно или можно добавить его в <div class="author"> и будет обработан правильно?

Могу ли я иметь следующее:

<div itemscope itemtype="http://schema.org/Article"> 
    <div class="author" itemprop="author"> 
     <a href="http://www.author.com">Author's Name</a> 
    </div> 
</div> 

вместо

<div itemscope itemtype="http://schema.org/Article"> 
    <div class="author"> 
     <a href="http://www.author.com" itemprop="author">Author's Name</a> 
    </div> 
</div> 

Другими словами, делает itemprop свойство должны быть определены на элементе непосредственно (например, a или img) или его можно определить на обертке div с содержимым, фактически находящимся в дочернем элементе?

ответ

1

Это зависит от недвижимости (какое значение у нее должно быть).

itemprop на элементе с href или src атрибута (например, a или img) создает значение URI: он принимает значение атрибута href/src, а не содержимое элемента.

  • Здесь author свойство имеет строковое значение "Author's Name ":

    <div itemprop="author"> 
        <a href="http://example.com/">Author's Name</a> 
    </div> 
    
  • Здесь author свойство имеет значение URI" http://example.com/":

    <div> 
        <a href="http://example.com/" itemprop="author">Author's Name</a> 
    </div> 
    

Там есть еще несколько исключений, например, meter элемент или элемент time. Вы можете обратиться к резюме в my answer about datatypes in Microdata.

Оставляя эти исключения в стороне, если значение должно быть строкой, а у вас есть, скажем, только div элементов, не имеет значения, на каком элементе вы указываете itemprop, поэтому у этих трех фрагментов есть строка " bar "в качестве значения для foo собственности:

<div itemprop="foo"> 
    bar 
</div> 
<div itemprop="foo"> 
    <div> 
    bar 
    </div> 
</div> 
<div itemprop="foo"> 
    <div> 
    <div> 
     bar 
    </div> 
    </div> 
</div> 
+0

Спасибо! Что, если содержимое 'div' с' itemprop' является 'img'? Будет ли создан [ImageObject] (http://schema.org/ImageObject)? – p4sh4

+0

@ p4sh4: Вы имеете в виду '

'? Нет, потому что 'div' - это элемент, который создает строковое значение: он ищет содержимое своего элемента (и содержимое элемента для всех детей). Поскольку 'img' пуст (т. Е. Не имеет содержимого элемента), свойство' foo' не будет содержать контент. ··· Также обратите внимание, что Microdata никогда автоматически не создает элементы из словаря (например, Schema.org).Микроданные - это просто синтаксис, который можно использовать со многими различными словарями (он просто заботится о строках, URI и датах). Вам нужно будет использовать 'itemtype' для получения' ImageObject'. – unor

+0

Да. Фактически, я спрашивал о Schema.org, кто-то редактировал мой пост, чтобы быть о Microdata, это странно ... Итак, вы имеете в виду, что в случае Schema.org он автоматически создаст элемент ImageObject «из словаря», (не уверен, что это означает), в отличие от Microdata? – p4sh4

Смежные вопросы