Microdata可以应用于任何类型的HTML元素吗?

时间:2014-01-02 09:52:50

标签: html markup microdata

在网络上的所有示例中,我都看到微数据属性itemscopeitemtype已应用于div元素,如下所示:

<div itemscope itemtype ="http://schema.org/Movie">
  <h1 itemprop="name">Avatar</h1>
  <span>Director: <span itemprop="director">James Cameron</span> (born August 16, 1954)</span>
  <span itemprop="genre">Science fiction</span>
  <a href="../movies/avatar-theatrical-trailer.html" itemprop="trailer">Trailer</a>
</div>

但是Microdata可以应用于任何其他元素,在我的情况下我想将它应用于列表项:

<ul>
<li itemscope itemtype ="http://schema.org/Movie">
  <h1 itemprop="name">Avatar</h1>
  <span>Director: <span itemprop="director">James Cameron</span> (born August 16, 1954)</span>
  <span itemprop="genre">Science fiction</span>
  <a href="../movies/avatar-theatrical-trailer.html" itemprop="trailer">Trailer</a>
</li>
</ul>

这有什么已知的问题吗?

3 个答案:

答案 0 :(得分:8)

您可以将每个 HTML5元素用于微数据...

Microdata为HTML5定义了5个新属性:

  • itemid
  • itemprop
  • itemref
  • itemscope
  • itemtype

让我们看看它们可以在哪里使用。 Section 5.2说:

  

每个HTML元素都可以指定itemscope属性。

所以每个元素都可以有itemscope。进一步说:

  

具有itemscope属性的元素可能指定了itemtype属性

所以如果它有itemscope(并且我们知道每个元素都可以拥有它),它也可以有itemtype。下一个:

  

具有itemscope属性和itemtype属性[...]的元素也可能指定了itemid属性

如果它有itemscopeitemtype,它也可以有itemid。和

  

具有itemscope属性的元素可能指定了itemref属性

如果有itemscope,则可以itemref

现在只缺少itemprop。它在Section 5.3中定义:

  

每个HTML元素都可能指定了itemprop属性

所以itemprop也可用于每个元素。

(注意Microdata(W3C Note)refers to the HTML5 spec for defining what a "HTML element" is,所以基本上“HTML元素”的意思是“HTML5元素”。)

...但是有些元素会获得不同的内容模型(使用itemprop时)

请参阅8.1 Content models

例如:

  • href成为aarea
  • 的必需属性
  • data成为iframe
  • 的必需属性
  • name
  • 不再允许http-equivcharsetmeta属性

...并且某些元素具有用于确定属性值的特殊规则(使用itemprop时)

请参阅5.4 Values

例如:

Special rules for links。此处foobar的值是网址http://example.com/,而不是字符串Link

<a href="http://example.com/" itemprop="foobar">Link</a>

此处foobar的值为5,而不是10

<data value="5" itemprop="foobar">10</data> 

搜索引擎应该知道这一点。

如果谷歌或其他搜索引擎服务支持它无法得到明确答复,因为在涉及隐藏其代码的第三方服务时,无法肯定地回答。即使他们(似乎)今天支持它,我们也不知道明天会发生什么。所以这些问题通常不适合Stack Overflow。

但是,没有理由认为搜索引擎不支持它。

答案 1 :(得分:4)

简单地说,“是”。请亲自查看Google页面,看看他们是否在不同的代码中使用它:https://support.google.com/webmasters/answer/176035?hl=en

答案 2 :(得分:1)

加入Jeremy Miller的回答:

Microdata基本上形成了对象。在有效的HTML中,具有itemscope属性的元素包含与其关联的所有微数据。此外,具有itemprop的每个元素的范围足以包含该属性所需的所有数据。

想象一下,用项目本身替换每个itemscope元素;并使用属性本身及其值替换每个itemprop元素。 (Think XML)

在您的示例中,该项目如下所示:

<movie>
    <name>Avatar</name>
    <director>James Cameron</director>
    <genre>Science fiction</genre>
    <trailer>Trailer</trailer>
</movie>

itemscopeitemprop的结构可以应用于任何合适的HTML元素层次结构,无论它们是什么元素。冗长的答案仍然是肯定的,但我希望这有助于您理解微数据的解释方式。

另外,我猜你的例子来自here,但我建议你至少给第1a-1d项快速阅读。