我正在编写 HTML/CSS/JS 大约两年了,只是决定更加专注于通过使用微数据/RDF 来增强我的标记。
通过进一步的调查和查找这件事在野外是如何处理的,我发现了 YouTube,发现他们在 div 块中使用元标签来描述他们的视频,发现这很奇怪,因为我从来没有在旁边使用元标签在文档的头部。
div-block 有一个 itemtype 来声明它使用的方案,所以我检查了给定的页面(schema.org),并通过在他们的文档中挖掘以下部分找到:
3c。缺失/隐含信息:使用带有内容的元标记
有时,网页包含对标记有价值的信息,但由于信息在页面上的显示方式而无法标记。[...]
在这些情况下,使用元标记和内容属性来指定信息。考虑这个例子——图像向用户显示了 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 关于元标签并意识到这种感觉来自哪里。
4.2.5 元元素
...
可以使用此元素的上下文:
- 如果存在charset属性,或者元素的http-equiv属性处于 Encoding 声明状态:在head元素中。
- 如果http-equiv属性存在但不在 Encoding 声明状态:在head元素中。
- 如果http-equiv属性存在但不在 Encoding 声明状态:在作为head元素的子元素的noscript元素中。
- 如果存在name属性:需要元数据内容的位置。
...
必须指定name、http-equiv、charset属性之一。
如果指定了name或http-equiv,则还必须指定content属性。否则,必须省略。
来源:http ://www.w3.org/TR/html5/document-metadata.html#the-meta-element
现在我不知道该怎么想,因为 schema.org 给出的文档实际上忽略了 w3 的建议。
因此,在我真正开始做错之前,我正在向更有经验的人寻求答案。
问候 JD。