我正在编写HTML / CSS / JS大约两年了,我决定通过使用微数据/ RDF来更加专注于增强我的标记。
通过进一步的调查,并通过查看这个东西是如何在野外处理我遇到了YouTube,看到他们在div块中使用元标记来描述他们的视频并发现它很奇怪,因为我从未使用过元标记在文档的头部分旁边。
div-block有一个itemtype来声明它正在使用的方案,所以我检查了给定的页面(schema.org),并通过在他们的文档中挖掘以下部分找到:
3c上。缺失/隐含信息:使用带有内容的元标记
有时,网页上的信息对于标记很有价值,但由于信息在页面上的显示方式,因此无法标记信息。 [...]
在这些情况下,请使用元标记和content属性来指定信息。考虑这个例子 - 该图像向用户显示了5星评级中的4星:
<div itemscope itemtype="http://schema.org/Offer">
<span itemprop="name">Blend-O-Matic</span>
<span itemprop="price">$19.95</span>
<img src="four-stars.jpg" />
Based on 25 user ratings
</div>
再次举例说明了评级信息。
<div itemscope itemtype="http://schema.org/Offer">
<span itemprop="name">Blend-O-Matic</span>
<span itemprop="price">$19.95</span>
<div itemprop="reviews" itemscope itemtype="http://schema.org/AggregateRating">
<img src="four-stars.jpg" />
<meta itemprop="ratingValue" content="4" />
<meta itemprop="bestRating" content="5" />
Based on <span itemprop="ratingCount">25</span> user ratings
</div>
</div>
来源:http://schema.org/docs/gs.html#advanced_missing
现在似乎是最好的做法(有时)以这种方式添加微数据,但是我仍然觉得使用元数据块中的元数据库让我感到很奇怪所以我检查了关于元标记的w3,并意识到这种感觉来自何处。 / p>
4.2.5元元素
...
可以使用此元素的上下文:
- 如果 charset 属性存在,或者元素的 http-equiv 属性处于编码声明状态: head 元素
- 如果 http-equiv 属性存在但不在编码声明状态中:在 head 元素中。
- 如果 http-equiv 属性存在但不在编码声明状态中:在 noscript 元素中,该元素是 head 元素。
- 如果存在 name 属性:需要元数据内容。
...
必须指定其中一个名称, http-equiv , charset 属性。
如果指定了 name 或 http-equiv ,则还必须指定 content 属性必须。 否则,必须省略。
来源:http://www.w3.org/TR/html5/document-metadata.html#the-meta-element
现在我不知道该怎么想,因为schema.org提供的文档实际上忽略了w3的建议。
所以,在我真正开始做错之前,我要求经验丰富的人回答这个问题。
迎接JD。
答案 0 :(得分:7)
呀。这有点复杂。你坐得舒服吗?然后我会开始......
Microdata首次出现在现在称为HTML Living standard的内容中,作为其中不可或缺的一章。这是WHATWG制作的HTML规范。当W3C HTML5草稿自动采取相同的更改时,Microdata也出现在该标准中。然而,W3C的人们认为它与他们已经工作了一段时间的现有标准RDFa相冲突并且竞争。他们觉得在主要的HTML5标准文档中使用Microdata,而RDFa是分开的是不公平的,因此Microdata在W3C被移动到a separate standard
HTML生活标准(静止)和W3C微数据标准(直到最近)明确指出<meta>
元素在<body>
中有效,当且仅当它包含itemprop
时属性和content
属性,并且没有其他<meta>
元素特定属性。 (例如,它不得包含http-equiv
或name
属性,但id
和class
都可以。)
最近,已经确定有效性要求在主要的W3C HTML规范中更好,而不是微数据规范。因此,实际要求已从微数据规范中删除,尽管在<meta>
中仍有一些<body>
元素的使用示例。
这一切都发生在HTML5规范修复之后 - 实际上现在只能进行澄清和错误修复 - 因此有效性信息已移至W3C HTML5.1 spec
它描述了<meta>
中<body>
有效的有效性要求。它说(见最后一个要点):
4.2.5元元素
可以使用此元素的上下文:
- 如果存在charset属性,或者元素的http-equiv属性处于Encoding声明状态:head元素中。
- 如果http-equiv属性存在但不在编码声明状态中:在head元素中。
- 如果http-equiv属性存在但不在编码声明状态中:在作为头部子节点的noscript元素中 元件。
- 如果存在name属性:预期元数据内容。
- 如果存在itemprop属性:预期元数据内容。
- 如果存在itemprop属性:需要使用短语内容。
请注意,<link>
元素也以类似的方式扩展。
更新:
正如评论中的unor音符所述,meta元素对“元素可以使用的上下文:”的更改没有进入HTML 5.1推荐标准,它们也没有恢复到5.2或5.3
它们现在出现在Section 7.2 Content Models下的单独的W3C微数据规范中,其中第4点表示:
如果链接或元元素上存在itemprop属性,那么 element是流内容和短语内容,可以在哪里使用 短语内容是预期的。