Deve ser bom usar diferentes sintaxes na mesma página.
Porém, ele tem uma desvantagem: se você deseja conectar entidades especificadas em diferentes sintaxes, não pode aninhar nelas. Você precisa usar URIs. (Mas observe que nem todos os consumidores dos dados seguem essas referências de URI).
Exemplo mostrando aninhamento x referência
Você pode conectar um BreadcrumbList
a um WebPage
com a breadcrumb
propriedade
Ao usar apenas uma sintaxe, você pode simplesmente aninhar os itens:
<!-- 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>
Mas se você combinar sintaxes, precisará especificar e fazer referência a URIs:
<!-- 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 a outra direção, é necessário atribuir ao item em JSON-LD um URI @id
e vincular a esse URI em, por exemplo, um link
elemento. Veja um exemplo.
Mais exemplos
Vinculei a vários exemplos que usam JSON-LD junto com Microdata nesta resposta no Stack Overflow .