web-dev-qa-db-de.com

Kann ich Microdata und JSON-LD auf derselben Seite für unterschiedliche Entitäten mischen?

Meine Website verwendet JSON-LD und Microdata.

Zum Beispiel habe ich in BreadcrumbList das Mikrodatenformat verwendet und für andere (wie Organization, TouristAttraction) wurde JSON-LD verwendet.

Kann ich Microdata und JSON-LD auf derselben Seite für verschiedene Entitäten mischen oder sollte ich nur ein Format verwenden?

8
Mukesh Kumar

Es sollte in Ordnung sein, unterschiedliche Syntaxen auf derselben Seite zu verwenden.

Dies hat jedoch einen Nachteil: Wenn Sie Entitäten verbinden möchten, die in verschiedenen Syntaxen angegeben sind, können Sie sie nicht verschachteln. Sie müssen stattdessen URIs verwenden. (Beachten Sie jedoch, dass nicht unbedingt alle Verbraucher der Daten solchen URI-Verweisen folgen.)

Beispiel für das Verschachteln im Vergleich zum Referenzieren

Mit der Eigenschaft BreadcrumbList können Sie einen WebPage mit einem breadcrumb verbinden.

Wenn Sie nur eine Syntax verwenden, können Sie die Elemente einfach verschachteln:

<!-- 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>

Wenn Sie jedoch Syntaxmischungen verwenden, müssen Sie stattdessen URIs angeben und referenzieren:

<!-- 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>

Für die andere Richtung müssen Sie dem Element in JSON-LD einen URI in @id geben und innerhalb von z. ein link-Element. Siehe ein Beispiel.

Mehr Beispiele

Ich habe in dieser Antwort auf Stack Overflow auf mehrere Beispiele verwiesen, die JSON-LD zusammen mit Mikrodaten verwenden.

6
unor