Nu Html Checker 是正确的,谷歌的例子是无效的。如果meta 元素具有itemprop 属性,则需要content 属性。
来自WHATWG HTML 和HTML 5.1 (W3C Working Draft):“如果指定了[...] itemprop,则还必须指定content 属性。”
来自旧的Microdata (W3C Note):“如果meta 元素具有itemprop 属性,[...] 必须存在content 属性。”
添加一个空的content 属性使其有效,但还有其他选项。
Schema.org 的 mainEntityOfPage property 期望值是 URL 或 CreativeWork 项。
Google 自己的 recommended/required properties for their Article Rich Snippet 文档说他们需要一个 URL 值,但他们的示例显示了如何创建一个项目值。
根据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>
这将创建一个具有url 属性的WebPage 项目。只能在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>
结合上述方法之一,例如,结合itemid 或url 属性。
请注意,在这种情况下,您通常会使用 the inverse property mainEntity,但 Google 目前并未证明他们会支持 Article Rich Snippet。