web-dev-qa-db-fra.com

Mettez-vous des méta-balises Schema Microdata dans le corps html?

J'ai cherché pendant longtemps sur Internet et stackoverflow pour une réponse à cette question, et j'ai trouvé des liens qui disent que vous ne devriez pas mettre de balises META dans le corps:

tandis que le site Web schema.org montre clairement que les balises META sont imbriquées directement dans le corps http://schema.org/AggregateRating

Regardez simplement l'exemple qui y est affiché

 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 vous deviez conserver les balises META dans le <head>, comment relieriez-vous ces deux dates à leurs critiques? <meta itemprop="datePublished" content="2011-04-01"><meta itemprop="datePublished" content="2011-03-25">

Cela crée de la confusion et j'aimerais savoir comment le faire correctement.

61
Timo Huovinen

Si un élément meta

  • a un attribut itemprop et un attribut content, et
  • n'a pas d'attribut name, pas de http-equiv attribut, et aucun charset attribut,

alors il est valide d'avoir ce meta dans le body. (Si la valeur est une URL, vous vous devez utiliser link à la place .)

Pourquoi? Parce que la spécification de microdonnées change HTML5 .

(Notez que RDFa change également HTML5 en autorisant meta dans le body dans certains cas.)


Si vous deviez conserver les balises meta dans le <head>, comment relieriez-vous ces deux dates à leurs critiques?

Vous pourriez tiliser l'attribut itemref :

<!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 prend une liste séparée par des espaces de id valeurs, de sorte que vous pouvez même référencer deux éléments ou plus. Ajoutez simplement le id de tous les éléments (contenant les attributs itemprop) qui doivent être ajoutés à l'élément à son attribut itemref, par exemple: itemref="date author rating".

76
unor

N'oubliez pas qu'il est possible d'éviter totalement le balisage HTML et d'utiliser le balisage JSON-LD entièrement contenu dans le <head> n'importe où dans le document HTML (même dynamiquement injecté!) comme ceci:

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

jetez un oeil aux exemples dans schema.org , ils contiennent généralement des exemples de balises JSON comme ceci https://schema.org/Restaurant .

Voici un autre bon article à ce sujet http://www.seoskeptic.com/json-ld-google-knowledge-graph-schema-org-seo/

9
Gruber

Ce que je peux lire sur whatwg.org est correct à utiliser dans le corps: http://www.whatwg.org/specs/web-apps/current-work/multipage/semantics.html#the-meta-element

J'utilise des balises META dans le corps de mon blog pour spécifier les propriétés "datePublished" et "dateUpdated". Googles Rich Snippets Testing Tool me dit que c'est correct et w3c valide le code.

8
superhero

Vous pouvez utiliser:

<meta itemprop="">

dans le corps de la page pour faire un balisage sémantique schema.org lisible par machine (par des robots, pour le référencement, par exemple) même si vous ne voulez pas afficher le texte réel (nom du produit, par exemple) sur la page.

voir: http://schema.org/docs/gs.html#advanced_missing

Parfois, une page Web contient des informations qui seraient précieuses à baliser, mais les informations ne peuvent pas être balisées en raison de la façon dont elles apparaissent sur la page. Les informations peuvent être véhiculées dans une image (par exemple, une image utilisée pour représenter une note de 4 sur 5) ou un objet Flash (par exemple, la durée d'un clip vidéo), ou elles peuvent être implicites mais non explicitées sur la page (par exemple, la devise d'un prix).

5
Rowe Morehouse

Je le fais de cette façon:

<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"> 
4
ladar

Lors de la première utilisation des microdonnées de schema.org, j'ai ajouté les balises META dans la balise head de ma page Web, mais lorsque j'ai exécuté cette page contre Outil de test des extraits de code riches de Google , les données n'ont pas été extraites. J'ai ensuite déplacé les balises META dans le corps de la page et les données ont été affichées comme extraites.

3
HBCondo