在同一页面上使用不同的语法应该没问题。
但是,它有一个缺点:如果要连接以不同语法指定的实体,则不能嵌套它们。您必须改为使用URI。(但请注意,不一定所有数据使用者都遵循此类URI引用。)
显示嵌套与引用的示例
您可以使用属性将a连接BreadcrumbList
到a 。WebPage
breadcrumb
仅使用一种语法时,您可以简单地嵌套项目:
<!-- Microdata only -->
<div itemscope itemtype="http://schema.org/WebPage">
<div itemprop="breadcrumb" itemscope itemtype="http://schema.org/BreadcrumbList">
</div>
</div>
<!-- JSON-LD only -->
<script type="application/ld+json">
{
"@context": "http://schema.org",
"@type": "WebPage",
"breadcrumb":
{
"@type": "BreadcrumbList"
}
}
</script>
但是,如果混合使用语法,则必须指定和引用URI:
<!-- Microdata, giving the entitiy an URI with the 'itemid' attribute -->
<div itemscope itemtype="http://schema.org/BreadcrumbList" itemid="#page-breadcrumbs">
</div>
<!-- JSON-LD, referencing the URI "#page-breadcrumbs" which is specified in the Microdata -->
<script type="application/ld+json">
{
"@context": "http://schema.org",
"@type": "WebPage",
"breadcrumb":
{
"@type": "BreadcrumbList",
"@id": "#page-breadcrumbs"
}
}
</script>
对于另一个方向,您需要给JSON-LD中的项目一个URI @id
,并在例如一个link
元素内链接到该URI 。看一个例子。
更多例子
我在Stack Overflow的这个答案中链接了多个使用JSON-LD 和 Microdata的示例。