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.
Si un élément meta
itemprop
et un attribut content
, etname
, 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"
.
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 n'importe où dans le document HTML (même dynamiquement injecté!) comme ceci:<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>
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/
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.
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).
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">
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.