¿Colocas metaetiquetas de Schema Microdata en el cuerpo html?
He buscado durante mucho tiempo en Internet y en Stackoverflow una respuesta a esta pregunta, y encontré enlaces que dicen que no debes colocar metaetiquetas en el cuerpo:
- Usando la etiqueta <meta> de HTML5+Microdata en el <body>
- pasar metadatos en la parte del cuerpo
- Metaetiquetas en el cuerpo
mientras que el sitio web de esquema.org muestra claramente las metaetiquetas anidadas directamente en el cuerpo http://schema.org/AggregateRating
Solo mira el ejemplo que está publicado allí.
Customer reviews:
<div itemprop="reviews" itemscope itemtype="http://schema.org/Review">
<span itemprop="name">Not a happy camper</span> -
by <span itemprop="author">Ellie</span>,
<meta itemprop="datePublished" content="2011-04-01">April 1, 2011
<div itemprop="reviewRating" itemscope itemtype="http://schema.org/Rating">
<meta itemprop="worstRating" content = "1">
<span itemprop="ratingValue">1</span>/
<span itemprop="bestRating">5</span>stars
</div>
<span itemprop="description">The lamp burned out and now I have to replace
it. </span>
</div>
<div itemprop="reviews" itemscope itemtype="http://schema.org/Review">
<span itemprop="name">Value purchase</span> -
by <span itemprop="author">Lucas</span>,
<meta itemprop="datePublished" content="2011-03-25">March 25, 2011
<div itemprop="reviewRating" itemscope itemtype="http://schema.org/Rating">
<meta itemprop="worstRating" content = "1"/>
<span itemprop="ratingValue">4</span>/
<span itemprop="bestRating">5</span>stars
</div>
<span itemprop="description">Great microwave for the price. It is small and
fits in my apartment.</span>
</div>
Si mantuvieras las metaetiquetas en <head>
, ¿cómo relacionarías estas dos fechas con sus reseñas?
<meta itemprop="datePublished" content="2011-04-01">
<meta itemprop="datePublished" content="2011-03-25">
Esto está causando confusión y me gustaría saber cómo hacerlo correctamente.
si un meta
elemento
- tiene un
itemprop
atributo y uncontent
atributo, y - no tiene ningún
name
atributo, ningúnhttp-equiv
atributo y ningúncharset
atributo,
entonces es válido tener esto meta
en el body
. (Si el valor es una URL, debe utilizar link
en su lugar .)
¿Por qué? Porque la especificación de Microdatos cambia HTML5 .
(Tenga en cuenta que RDFa también cambia HTML5 al permitirlo meta
enbody
algunos casos).
Si mantuvieras las
meta
etiquetas en el<head>
, ¿cómo relacionarías estas dos fechas con sus reseñas?
Podrías usar el itemref
atributo :
<!DOCTYPE html>
<html>
<head>
<title>Using itemref for meta in the head</title>
<meta itemprop="datePublished" content="2011-03-25" id="date">
</head>
<body>
<div itemscope itemtype="http://schema.org/Review" itemref="date">
<span itemprop="name">…</span>
</div>
</body>
</html>
itemref
toma una lista de id
valores separados por espacios, por lo que incluso puede hacer referencia a dos o más elementos. Simplemente agregue id
todos los elementos (que contienen itemprop
atributos) que deben agregarse al elemento a su itemref
atributo, por ejemplo: itemref="date author rating"
.
Recuerde también que es posible evitar totalmente el marcado HTML y utilizar el marcado JSON-LD contenido completamente en cualquier parte del documento HTML (¡incluso inyectado dinámicamente!) de esta manera:<head>
<script type="application/ld+json">
{
"@context": "http://schema.org",
"@type": "Restaurant",
"name": "Fondue for Fun and Fantasy",
"description": "Fantastic and fun for all your cheesy occasions",
"openingHours": "Mo,Tu,We,Th,Fr,Sa,Su 11:30-23:00",
"telephone": "+155501003333",
"menu": "http://example.com/menu"
}
</script>
Eche un vistazo a los ejemplos en esquema.org , generalmente contienen marcas de ejemplo JSON como este https://schema.org/Restaurant .
Aquí hay otro buen artículo al respecto http://www.seoskeptic.com/json-ld-google-knowledge-graph-schema-org-seo/
Lo que puedo leer en whatwg.org es correcto usarlo en el cuerpo: http://www.whatwg.org/specs/web-apps/current-work/multipage/semantics.html#the-meta-element
Utilizo metaetiquetas en el cuerpo de mi blog para especificar las propiedades "datePublished" y "dateUpdated". La herramienta de prueba de fragmentos enriquecidos de Google me dice que es correcta y el w3c valida el código.
Yo lo hago de esta manera:
<meta id="md_course" itemprop="course" name="course" content="..."/>
<meta id="md_lang" itemprop="language" content="eng"/>
<title id="md_title" itemprop="title" >Motivation and Course Overview</title>
</head>
<body itemscope itemtype=".../Presentation" itemref="md_course md_lang md_title md_field">