【问题标题】:Can Microdata be applied on any type of HTML element? [closed]微数据可以应用于任何类型的 HTML 元素吗? [关闭]
【发布时间】:2014-05-26 17:49:16
【问题描述】:

在网络上的所有示例中,我看到微数据属性 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>

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

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

这有什么已知的问题吗?

【问题讨论】:

  • 这个问题似乎是题外话,因为它是关于 SEO
  • 我认为这个问题应该重新提出。它有一个非常小的 SEO 方面的问题,但我编辑了它。然而,主要问题从来不是关于 SEO。

标签: html markup microdata


【解决方案1】:

您可以将每个 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 注释)refers to the HTML5 spec for defining what a "HTML element" is,所以本质上“HTML 元素”的意思是“HTML5 元素”。)

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

8.1 Content models

例如:

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

…而且有些元素有确定属性值的特殊规则(使用itemprop时)

5.4 Values

例如:

Special rules for links。这里foobar的值是URLhttp://example.com/,而不是字符串Link

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

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

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

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

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

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

【讨论】:

【解决方案2】:

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

【讨论】:

    【解决方案3】:

    添加到杰里米米勒的答案:

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

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

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

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

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

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

    【讨论】:

      猜你喜欢
      • 2018-04-14
      • 2022-07-19
      • 2017-05-30
      • 1970-01-01
      • 2023-03-04
      • 2012-08-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多