Dovrebbe andare bene usare sintassi diverse nella stessa pagina.
Ha uno svantaggio, tuttavia: se si desidera connettere entità specificate in sintassi diverse, non è possibile nidificarle. Devi invece usare gli URI. (Si noti che non necessariamente tutti i consumatori di dati seguono tali riferimenti URI.)
Esempio che mostra annidamento vs. riferimento
Puoi connetterti BreadcrumbList
a a WebPage
con la breadcrumb
proprietà.
Quando si utilizza solo una sintassi, è possibile semplicemente nidificare gli elementi:
<!-- 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>
Ma se mescoli le sintassi, devi invece specificare e fare riferimento agli 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>
Per l'altra direzione, è necessario assegnare a un URI in JSON-LD un URI @id
e collegarsi a questo URI all'interno di un link
elemento, ad esempio . Vedi un esempio
Più esempi
Ho collegato a più esempi che usano JSON-LD insieme ai microdati in questa risposta su Stack Overflow .