Google 文章 Rich Snippet 的 'mainEntityOfPage' 微数据标记
Microdata markup with 'mainEntityOfPage' for Google Article Rich Snippet
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 检查它时,我得到这个错误:
Element meta
is missing required attribute content
.
添加一个空的 content
属性似乎可以解决这个错误。这样做是否正确?
Nu Html Checker 正确,Google 示例无效。如果 meta
元素具有 itemprop
属性,则 content
属性是必需的。
来自 WHATWG HTML and also HTML 5.1 (W3C Working Draft):"If […] itemprop
is specified, then the content
attribute must also be specified."
来自旧的 Microdata (W3C Note):"If a meta
element has an itemprop
attribute, […] the content
attribute must be present."
添加空 content
属性使其有效,但还有其他选项。
Schema.org 的 mainEntityOfPage
property expects as value either a URL or a CreativeWork
项。
Google 自己的 recommended/required properties for their Article Rich Snippet 文档说他们期望 URL 值,但他们的示例显示了如何创建项目值。
根据 Schema.org 词汇表的 Google Structured Data Testing Tool. (Some examples use the itemid
attribute, which is, strictly speaking, not yet allowed/defined,以下所有解决方案都可以。)
如果你想提供一个URL值:
<link itemprop="mainEntityOfPage" href="https://example.com/article" />
直截了当。
这遵循 Google 自己的建议,需要最少的标记,并且适用于 head
以及 body
。
如果你有可见的link,你当然也可以使用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
.
中使用
如果你有可见的link,你当然也可以使用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: "first matching case")。所以 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
属性.
请注意,在这种情况下,您通常会使用 ,但 Google 目前并未证明他们会支持文章丰富网页摘要。
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 检查它时,我得到这个错误:
Element
meta
is missing required attributecontent
.
添加一个空的 content
属性似乎可以解决这个错误。这样做是否正确?
Nu Html Checker 正确,Google 示例无效。如果 meta
元素具有 itemprop
属性,则 content
属性是必需的。
来自 WHATWG HTML and also HTML 5.1 (W3C Working Draft):"If […] itemprop
is specified, then the content
attribute must also be specified."
来自旧的 Microdata (W3C Note):"If a meta
element has an itemprop
attribute, […] the content
attribute must be present."
添加空 content
属性使其有效,但还有其他选项。
Schema.org 的 mainEntityOfPage
property expects as value either a URL or a CreativeWork
项。
Google 自己的 recommended/required properties for their Article Rich Snippet 文档说他们期望 URL 值,但他们的示例显示了如何创建项目值。
根据 Schema.org 词汇表的 Google Structured Data Testing Tool. (Some examples use the itemid
attribute, which is, strictly speaking, not yet allowed/defined,以下所有解决方案都可以。)
如果你想提供一个URL值:
<link itemprop="mainEntityOfPage" href="https://example.com/article" />
直截了当。
这遵循 Google 自己的建议,需要最少的标记,并且适用于 head
以及 body
。
如果你有可见的link,你当然也可以使用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
.
如果你有可见的link,你当然也可以使用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: "first matching case")。所以 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
属性.
请注意,在这种情况下,您通常会使用