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
属性似乎可以解决此错误。这样做是否正确?
答案 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词汇表。)
<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>
结合上述方法之一,例如itemid
或url
属性。
请注意,在这种情况下,您通常会使用the inverse property mainEntity
,但Google目前没有记录他们是否支持Article Rich Snippet。