用于Google Article Rich Snippet的'mainEntityOfPage'的微数据标记

时间:2016-03-20 18:12:38

标签: html5 meta schema.org microdata google-rich-snippets

Google的Article Rich Snippet的Microdata example包含此meta元素,其中包含Schema.org的mainEntityOfPage属性:

<meta itemscope itemprop="mainEntityOfPage"  itemType="https://schema.org/WebPage" itemid="https://google.com/article"/>

使用Nu Html Checker检查时,出现此错误:

  

元素meta缺少必需的属性content

添加空content属性似乎可以解决此错误。这样做是否正确?

1 个答案:

答案 0 :(得分:5)

Nu Html Checker是正确的,Google的示例无效。如果content元素具有meta属性,则需要itemprop属性。

来自WHATWG HTML以及HTML 5.1 (W3C Working Draft):“如果指定了[...] itemprop,则还必须指定content属性。”

从旧版Microdata (W3C Note)开始:“如果meta元素具有itemprop属性,则必须存在content属性。”

添加空content属性使其有效,但还有其他选项。

Schema.org的mainEntityOfPage property期望值为网址或CreativeWork项。

Google自己的recommended/required properties for their Article Rich Snippet文档说他们希望获得一个网址值,但他们的示例会显示如何创建一个项目值。

根据Google Structured Data Testing Tool,所有以下解决方案都可以。 (有些示例使用itemid属性,严格来说,not yet allowed/defined用于Schema.org词汇表。)

如果要提供URL值:

<link itemprop="mainEntityOfPage" href="https://example.com/article" />

简单。

这符合Google自己的建议,需要最少的标记,并且适用于head以及body

如果您有可见链接,当然也可以使用a元素。

如果要提供商品值:

作为类型,您可以使用CreativeWork或其任何子类型,例如WebPage

div元素+ url属性

<div itemprop="mainEntityOfPage" itemscope itemtype="http://schema.org/WebPage">
  <link itemprop="url" href="https://example.com/article" /> 
</div>

这将创建一个WebPage项,其url属性。它只能在body

中使用

如果您有可见链接,当然也可以使用a元素。

meta元素,其中包含空content属性和itemid

<meta itemprop="mainEntityOfPage" content="" itemscope itemtype="http://schema.org/WebPage" itemid="https://example.com/article" />

这是基于Google的示例,但使用空content属性使其有效。

请注意,在这种情况下,微数据解析器必须忽略content属性,因为提供了itemscope属性(Microdata W3C Note / WHATWG HTML Microdata:“第一个匹配的情况”) 。因此itemprop值将是一个项目,而不是字符串。

这会创建一个带有标识符的空项。适用于head以及body。它不允许直接向此WebPage项添加属性(您必须创建具有相同itemid值的另一项。)

带有div

itemid元素
<div itemprop="mainEntityOfPage" itemscope itemtype="http://schema.org/WebPage" itemid="https://example.com/article">
</div>

这会创建一个带有标识符的空项。它不仅适用于meta示例,而且仅适用于body,因此可以直接向此WebPage项添加其他属性。

如果您已有WebPage项:

如果您已经在页面上提供了WebPage项,例如

<body itemscope itemtype="http://schema.org/WebPage">

  <article itemscope itemtype="http://schema.org/Article">
  </article>

</body>

您可以通过Microdata的itemref属性

来使用它
<body itemprop="mainEntityOfPage" itemscope itemtype="http://schema.org/WebPage" id="this-page">

  <article itemscope itemtype="http://schema.org/Article" itemref="this-page">
  </article>

</body>

结合上述方法之一,例如itemidurl属性。

请注意,在这种情况下,您通常会使用the inverse property mainEntity,但Google目前没有记录他们是否支持Article Rich Snippet。