请考虑以下标记有属性的代码以提供微数据:
<!DOCTYPE html>
<html>
<head>
<title>Micro data test - Normal version</title>
</head>
<body>
<div itemscope itemtype="http://schema.org/Product">
<h1 itemprop="name">Product name</h1>
<img alt="" itemprop="image" src="http://placehold.it/200x200" />
<div itemprop="description">This is the product description.</div>
<div itemprop="offers" itemscope itemtype="http://schema.org/Offer">
<meta content="in_stock" itemprop="availability" />
<span content="GBP" itemprop="priceCurrency">£</span><span itemprop="price">100.00</span>
</div>
</div>
</body>
</html>
使用Google的结构化数据测试工具可得出积极的结果。
在测试示例中这很好,但是,我们希望在HTML结构差异很大的各种站点上实现微数据。要以这种方式实现属性,将需要有人分别在每个站点上手动编辑HTML标记。
最好,我们希望能够调用一个将所有微数据打包在一个位置的函数。从技术上讲,这可以通过以下方式使用元标记来实现:
<!DOCTYPE html>
<html>
<head>
<title>Micro data test - Meta tag version</title>
</head>
<body>
<meta itemscope itemtype="http://schema.org/Product" itemref="microName microImage microDescription microOffer" />
<meta id="microName" itemprop="name" content="Product name" />
<link id="microImage" itemprop="image" href="http://placehold.it/200x200" />
<meta id="microDescription" itemprop="description" content="This is the product description." />
<meta id="microOffer" itemprop="offers" itemscope itemtype="http://schema.org/Offer" itemref="microCurrency microPrice microAvail" />
<meta id="microAvail" itemprop="availability" content="in_stock" />
<meta id="microCurrency" itemprop="priceCurrency" content="GBP" />
<meta id="microPrice" itemprop="price" content="100.00" />
<div>
<h1>Product name</h1>
<img alt="" src="http://placehold.it/200x200" />
<div>This is the product description.</div>
<div>£100.00</div>
</div>
</body>
</html>
使用Google的结构化数据测试工具可获得与第一次测试相同的肯定结果。
作为参考(我们永远不会在实际站点上这样做),如果您尝试传递CSS隐藏的微数据,则Google的结构化数据测试工具会返回错误。
因此,普通标记和元标记标记都会产生相同的结果,但是由于Google和Schema.org的以下声明,我有些担忧:
https://support.google.com/webmasters/answer/146750指出:
通常,Google将仅使用用户可见的标记数据。隐藏的数据将被忽略。但是,在某些情况下,同时提供内容的机器可读版本和人类可读版本都是有用的。例如,虽然文本字符串“猫王的生日”对许多人类读者都是重要的,但对搜索引擎而言,意义不如1935-01-08。同样,人类读者可以推断出$符号的含义,但是专门告诉搜索引擎您的价格是以比索还是美元为单位也很有用。
http://schema.org/docs/gs.html状态(与使用元标记有关):
应当谨慎使用此技术。仅将带有内容的元数据用于否则无法标记的信息。
http://schema.org/docs/faq.html#13指出:
通常,您只应标记访问网页的人可见的内容,而不标记隐藏的div或其他隐藏的页面元素中的内容。
我的问题是:
- 虽然不会返回任何错误,但我们会因使用这种方式使用元标记(即重复内容,隐藏信息等)而受到搜索引擎的惩罚吗?
- 如果这不合适,您能否建议从实际数据中分离微数据的任何方法,还是我们必须逐一考虑并根据具体情况在HTML中实现呢?