私のウェブサイトはJSON-LDとMicrodataを使用しています。
たとえば、BreadcrumbList
ではMicrodata形式を使用し、その他(Organization
、TouristAttraction
など)ではJSON-LDが使用されています。
異なるエンティティの同じページでMicrodataとJSON-LDを混在させることはできますか、それとも1つの形式のみを使用する必要がありますか?
同じページで異なる構文を使用しても問題ありません。
ただし、1つの欠点があります。異なる構文で指定されたエンティティを接続する場合、それらをネストすることはできません。代わりにURIを使用する必要があります。 (ただし、必ずしもデータのすべてのコンシューマーがそのようなURI参照に従うわけではないことに注意してください。)
BreadcrumbList
プロパティを使用して、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のアイテムに@id
のURIを指定し、このURIにリンクする必要があります。 link
要素。 例を参照
JSON-LDとMicrodataを一緒に使用する複数の例にリンクしました スタックオーバーフローに関するこの回答 。