属性需要属于一个项。您可以使用 itemscope
属性创建一个项(itemtype
属性可以为此项指定类型)。
如果没有使用 itemscope
,您的标记示例将无效。
可以仅在 head
元素中提供微数据,但出于以下两个原因,这不被推荐:
微数据旨在用于现有的标记。虽然通常可以通过在 head
中包含某些 meta
/link
元素(使用 itemref
,请参见示例),来实现某些元素的使用,但大多数内容通常在 body
中。如果您只想在 head
中使用元素,则必须复制大部分内容。但是,如果您想走这条路,可以考虑使用 JSON-LD。
由于 head
不允许使用分组元素(如 div
),因此表达微数据变得复杂。您需要为每个属性使用 itemref
并滥用像 style
这样的元素用于每个项(请参见此答案中的第一个片段作为示例)。
您的示例可能如下所示:
<head>
<style itemscope itemtype="http://schema.org/Article" itemref="p1a p1b p1c"></style>
<meta id="p1a" itemprop="name" content="The Name or Title Here">
<meta id="p1b" itemprop="description" content="This is the page description">
<link id="p1c" itemprop="image" href="http://www.example.com/image.jpg">
</head>
如果您可以在 head
元素上使用 itemscope
,那将更好:
<head itemscope itemtype="http://schema.org/Article">
<meta itemprop="name" content="The Name or Title Here">
<meta itemprop="description" content="This is the page description">
<link itemprop="image" href="http://www.example.com/image.jpg">
</head>
但是,一旦你需要多个项目(这通常是情况,例如
Organization
/
Person
是
author
等),这种方法就不再适用了,你需要像我第一个代码片段中那样的解决方案。
请注意,在
body
元素内可以使用
meta
/
link
元素进行微数据标记。这使得它更加容易,因为你可以使用
div
元素来标记
itemscope
。因此,即使你复制内容而不是标记现有内容,也最好在
body
中这样做。
<div itemscope itemtype="http://schema.org/Article">
<meta itemprop="name" content="The Name or Title Here">
<meta itemprop="description" content="This is the page description">
<link itemprop="image" href="http://www.example.com/image.jpg">
</div>
我将image
属性的meta
元素替换为link
元素,因为使用meta
元素不符合此目的的要求。
<style>
?难道不能只使用像这样的带有空内容的meta
标签吗:<meta content="" itemscope itemtype="http://schema.org/Article" itemref="p1a p1b p1c">
?(验证器不会报错) - lucianmeta
元素必须恰好有以下属性之一:name
、itemprop
、http-equiv
、charset
。 - unor<meta itemprop="hasPart" content="" itemscope itemtype="http://schema.org/Article" itemref="p1a p1b p1c">
这个怎么样? - lucian