¿Colocas metaetiquetas de Schema Microdata en el cuerpo html?

Resuelto Timo Huovinen asked hace 12 años • 6 respuestas

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.

Timo Huovinen avatar Apr 23 '12 18:04 Timo Huovinen
Aceptado

si un metaelemento

  • tiene un itempropatributo y un contentatributo, y
  • no tiene ningún nameatributo, ningún http-equivatributo y ningún charsetatributo,

entonces es válido tener esto metaen el body. (Si el valor es una URL, debe utilizar linken su lugar .)

¿Por qué? Porque la especificación de Microdatos cambia HTML5 .

(Tenga en cuenta que RDFa también cambia HTML5 al permitirlo metaenbody algunos casos).


Si mantuvieras las metaetiquetas en el <head>, ¿cómo relacionarías estas dos fechas con sus reseñas?

Podrías usar el itemrefatributo :

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

itemreftoma una lista de idvalores separados por espacios, por lo que incluso puede hacer referencia a dos o más elementos. Simplemente agregue idtodos los elementos (que contienen itempropatributos) que deben agregarse al elemento a su itemrefatributo, por ejemplo: itemref="date author rating".

unor avatar Mar 14 '2014 20:03 unor

Recuerde también que es posible evitar totalmente el marcado HTML y utilizar el marcado JSON-LD contenido completamente en <head> cualquier parte del documento HTML (¡incluso inyectado dinámicamente!) de esta manera:

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

Gruber avatar May 13 '2015 04:05 Gruber

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.

superhero avatar Apr 28 '2012 20:04 superhero

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"> 
ladar avatar Apr 23 '2012 11:04 ladar