JSON-LD 和 Microdata 在同一页上?
JSON-LD and Microdata on the same page?
我的电子商务产品页面上有 Micro Data 和 JSON-LD,它们描述的是同一事物(在我的案例中是产品)。由于超出此问题范围的原因,我无法删除这两种格式中的任何一种。我在想:
这是 Google 的问题吗?结构化数据测试工具确实显示了两个项目(产品)而不是一个。
如果一个 属性,比方说产品名称,两种格式之间略有不同,这两种格式中的任何一种,例如,JSON- LD优先?
问题是消费者会认为描述的是不同的东西(或者更准确地说:消费者不知道这些东西是否相同)。
有一种方法可以防止这种情况¹:give each thing a URI,如果情况相同,则 URI 相同。
这可以通过 JSON-LD 中的 @id
和微数据中的 itemid
来完成。
所以一个简单的案例可能是:
<!-- markup on the product page,
so the fragment "#this" results in an absolute URI like
"http://example.com/products/foo#this" -->
<!-- JSON-LD -->
<script type="application/ld+json">
{
"@context": "http://schema.org",
"@type": "Product",
"@id": "#this",
"name": "Foo"
}
</script>
<!-- Microdata -->
<article itemscope itemtype="http://schema.org/Product" itemid="#this">
<h1 itemprop="name">Foo</h1>
</article>
如果像 name
这样的 属性 有不同的值,消费者处理这个问题的明显方法是给事物多个名称。对于消费者只需要一个名称的功能(例如,在丰富的结果中),未定义将使用哪个 name
值。如果消费者是搜索引擎,它可能会使用其现有的专有算法来处理此类情况。
¹ 当然还不清楚 if/how 各种消费者都支持它。但这是执行此操作的正确方法,也是执行此操作的唯一明确方法。隐含的方式包括希望消费者理解通常(但不一定)唯一属性(例如 url
、email
、productID
等)的相同值意味着事物是相同的。但是这种隐式方式当然可以和显式方式一起使用。
我的电子商务产品页面上有 Micro Data 和 JSON-LD,它们描述的是同一事物(在我的案例中是产品)。由于超出此问题范围的原因,我无法删除这两种格式中的任何一种。我在想:
这是 Google 的问题吗?结构化数据测试工具确实显示了两个项目(产品)而不是一个。
如果一个 属性,比方说产品名称,两种格式之间略有不同,这两种格式中的任何一种,例如,JSON- LD优先?
问题是消费者会认为描述的是不同的东西(或者更准确地说:消费者不知道这些东西是否相同)。
有一种方法可以防止这种情况¹:give each thing a URI,如果情况相同,则 URI 相同。
这可以通过 JSON-LD 中的 @id
和微数据中的 itemid
来完成。
所以一个简单的案例可能是:
<!-- markup on the product page,
so the fragment "#this" results in an absolute URI like
"http://example.com/products/foo#this" -->
<!-- JSON-LD -->
<script type="application/ld+json">
{
"@context": "http://schema.org",
"@type": "Product",
"@id": "#this",
"name": "Foo"
}
</script>
<!-- Microdata -->
<article itemscope itemtype="http://schema.org/Product" itemid="#this">
<h1 itemprop="name">Foo</h1>
</article>
如果像 name
这样的 属性 有不同的值,消费者处理这个问题的明显方法是给事物多个名称。对于消费者只需要一个名称的功能(例如,在丰富的结果中),未定义将使用哪个 name
值。如果消费者是搜索引擎,它可能会使用其现有的专有算法来处理此类情况。
¹ 当然还不清楚 if/how 各种消费者都支持它。但这是执行此操作的正确方法,也是执行此操作的唯一明确方法。隐含的方式包括希望消费者理解通常(但不一定)唯一属性(例如 url
、email
、productID
等)的相同值意味着事物是相同的。但是这种隐式方式当然可以和显式方式一起使用。