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

在networking的所有例子中,我看到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> 

有没有已知的问题呢?

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

您可以将每个 HTML5元素用于Microdata …

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

  • itemid
  • itemprop
  • itemref
  • itemscope
  • itemtype

让我们看看他们可以使用的地方。 第5.2节说:

每个HTML元素可能都有一个指定的itemscope属性。

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

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

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

具有itemscope属性和itemtype属性的元素也可以具有指定的itemid属性

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

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

如果它有itemscope ,它可以有itemref

现在只有itemprop丢失了。 它在5.3节定义:

每个HTML元素可能都有一个指定的itemprop属性

所以itemprop也可以用在每个元素上。

(请注意,Microdata(W3C注释) 是指定义HTML元素的HTML5规范 ,所以本质上“HTML元素”的意思是“HTML5元素”。)

…但一些元素获得不同的内容模型(当使用itemprop时)

请参阅8.1内容模型 。

例如:

  • href成为aarea的必需属性
  • data成为iframe的必需属性
  • meta上不再允许属性namehttp-equivcharset

…和一些元素有特定的规则来确定属性值(当使用itemprop时)

请参阅5.4值 。

例如:

链接的特殊规则 。 这里foobar的值是URL http://example.com/ ,而不是stringLink

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

这里foobar的值是5 ,而不是10

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

而search引擎应该知道这一点。

如果Google或其他search引擎服务提供支持,则无法明确回答,因为涉及隐藏代码的第三方服务时,没有什么可以肯定的回答。 即使他们(似乎)今天支持它,我们也不知道明天会发生什么。 所以这样的问题通常不适合Stack Overflow。

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

加上Jeremy Miller的回答:

微数据本质上形成对象。 在有效的HTML中,具有itemscope属性的元素包含与其关联的所有微数据。 而且, itemprop的每个元素的作用域足以包含该属性所需的所有数据。

设想用项目本身replace每个itemscope元素; 并用属性本身replace每个itemprop元素及其值。 (Think XML)

在你的例子中,该项目看起来像这样:

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

itemscopeitemprop的这种结构可以应用于任何合适的HTML元素层次结构,而不pipe它们是什么元素。 啰嗦的答案仍然是,但我希望这有助于你理解微数据是如何解释的。

另外,我猜你的例子是从这里开始的 ,但是我build议你至less给1a-1d一个快速阅读。