Debería estar bien usar diferentes sintaxis en la misma página.
Sin embargo, tiene un inconveniente: si desea conectar entidades especificadas en diferentes sintaxis, no puede anidarlas. Tienes que usar URI en su lugar. (Pero tenga en cuenta que no necesariamente todos los consumidores de los datos siguen tales referencias URI).
Ejemplo que muestra anidamiento vs. referencia
Puede conectar a BreadcrumbList
a a WebPage
con la breadcrumb
propiedad.
Cuando use solo una sintaxis, simplemente puede anidar los elementos:
<!-- 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>
Pero si combina las sintaxis, debe especificar y hacer referencia a los URI en su lugar:
<!-- 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>
Para la otra dirección, debe darle al elemento en JSON-LD un URI @id
y vincularlo a este URI, por ejemplo, dentro de un link
elemento. Mira un ejemplo.
Más ejemplos
Me vinculé a varios ejemplos que usan JSON-LD junto con Microdata en esta respuesta en Stack Overflow .