uno*_*nor 4 meta html5 microdata schema.org google-rich-snippets
Google的Article Rich Snippet 的Microdata示例包含meta具有Schema.org mainEntityOfPage属性的以下元素:
Run Code Online (Sandbox Code Playgroud)<meta itemscope itemprop="mainEntityOfPage" itemType="https://schema.org/WebPage" itemid="https://google.com/article"/>
使用Nu Html Checker进行检查时,出现此错误:
元素
meta缺少必填属性content。
添加空content属性似乎可以解决此错误。这样做正确吗?
Nu Html Checker是正确的,Google的示例无效。content如果meta元素具有属性,则该属性是必需的itemprop。
在WHATWG HTML和HTML 5.1(W3C工作草案)中:“如果itemprop指定[…] ,则content还必须指定属性。”
来自旧的Microdata(W3C注意):“如果meta元素具有itemprop属性,则[…]该content属性必须存在。”
添加一个空content属性使其有效,但是还有其他选项。
Schema.org的mainEntityOfPage属性期望URL或CreativeWork项目作为值。
Google自己的文章Rich Snippet推荐/必需属性的文档说,他们期望URL值,但是他们的示例展示了如何创建项目值。
根据Google结构化数据测试工具,以下所有解决方案都可以。(某些示例使用itemid属性,严格来说,尚未为Schema.org词汇表允许/定义该属性。)
<link itemprop="mainEntityOfPage" href="https://example.com/article" />
Run Code Online (Sandbox Code Playgroud)
直截了当。
这遵循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>
Run Code Online (Sandbox Code Playgroud)
这将创建一个WebPage带有url属性的项目。只能在中使用body。
如果您有可见链接,则当然也可以使用一个a元素。
meta具有空content属性的元素和itemid<meta itemprop="mainEntityOfPage" content="" itemscope itemtype="http://schema.org/WebPage" itemid="https://example.com/article" />
Run Code Online (Sandbox Code Playgroud)
这是基于Google的示例,但是具有空content属性以使其有效。
请注意,content在这种情况下,微数据解析器必须忽略该属性,因为itemscope提供了该属性(Microdata W3C注意 / 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>
Run Code Online (Sandbox Code Playgroud)
这将创建一个带有标识符的空项目。而不是meta示例,它仅在中起作用body,因此允许直接向此WebPage项目添加其他属性。
WebPage物品:如果您已经WebPage在页面上提供了一个项目,例如,
<body itemscope itemtype="http://schema.org/WebPage">
<article itemscope itemtype="http://schema.org/Article">
</article>
</body>
Run Code Online (Sandbox Code Playgroud)
您可以通过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>
Run Code Online (Sandbox Code Playgroud)
与上述方法之一结合使用,例如具有itemid或url属性。
请注意,在这种情况下,您通常会使用inverse属性mainEntity,但是Google目前没有文档证明他们支持Article Rich Snippet。