web-dev-qa-db-ja.com

異なるエンティティの同じページでMicrodataとJSON-LDを混在させることはできますか

私のウェブサイトはJSON-LDとMicrodataを使用しています。

たとえば、BreadcrumbListではMicrodata形式を使用し、その他(OrganizationTouristAttractionなど)ではJSON-LDが使用されています。

異なるエンティティの同じページでMicrodataとJSON-LDを混在させることはできますか、それとも1つの形式のみを使用する必要がありますか?

8
Mukesh Kumar

同じページで異なる構文を使用しても問題ありません。

ただし、1つの欠点があります。異なる構文で指定されたエンティティを接続する場合、それらをネストすることはできません。代わりにURIを使用する必要があります。 (ただし、必ずしもデータのすべてのコンシューマーがそのようなURI参照に従うわけではないことに注意してください。)

ネストと参照の例を示す例

BreadcrumbList プロパティを使用して、WebPagebreadcrumbに接続できます。

構文を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-LDMicrodataを一緒に使用する複数の例にリンクしました スタックオーバーフローに関するこの回答

6
unor