同じページで異なる構文を使用しても問題ありません。
ただし、欠点が1つあります。異なる構文で指定されたエンティティを接続する場合、それらをネストすることはできません。代わりにURIを使用する必要があります。(ただし、必ずしもデータのすべての利用者がそのようなURI参照に従うわけではないことに注意してください。)
ネストと参照の例
プロパティBreadcrumbList
を使用してa WebPage
をに接続できbreadcrumb
ます。
構文を1つだけ使用する場合は、項目をネストするだけです。
<!-- 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 を使用する複数の例にリンクしました。