Do you put Schema Microdata meta tags in the html body?
Asked Answered
P

6

66

I have searched for a long time across the internet and stackoverflow for an answer to this question, and I have found links that say that you should not put meta tags in the body:

while the schema.org website clearly shows the meta tags being nested directly in the body http://schema.org/AggregateRating

Just look at the example that is posted there

 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>

If you were to keep the meta tags in the <head>, then how would you relate these two dates to their reviews? <meta itemprop="datePublished" content="2011-04-01"> <meta itemprop="datePublished" content="2011-03-25">

This is causing confusion and I would like to know how to do it properly.

Prophet answered 23/4, 2012 at 11:0 Comment(0)
D
78

If a meta element

  • has an itemprop attribute and a content attribute, and
  • has no name attribute, no http-equiv attribute, and no charset attribute,

then it’s valid to have this meta in the body. (If the value is a URL, you must use link instead.)

Why? Because the Microdata specification changes HTML5.

(Note that RDFa also changes HTML5 by allowing meta in the body in some cases.)


If you were to keep the meta tags in the <head>, then how would you relate these two dates to their reviews?

You could use the itemref attribute:

<!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 takes a space-separated list of id values, so you can even reference two or more elements. Just add the id of all elements (containing itemprop attributes) that should be added to the item to its itemref attribute, e.g.: itemref="date author rating".

Deiform answered 14/3, 2014 at 20:54 Comment(2)
Wow, that itemref thing is awesome. Will definitely use that!Pamella
@unor: can you have a look at: #36083528 ?Steffi
R
10

Remember also that it's possible to totally avoid HTML markup and use JSON-LD markup entirely contained in the <head> anywhere in the HTML document (even dynamically injected!) like this:

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

have a look at the examples in schema.org, they usually contain JSON example markups like this https://schema.org/Restaurant.

Here is another good article about it http://www.seoskeptic.com/json-ld-google-knowledge-graph-schema-org-seo/

Refugiorefulgence answered 13/5, 2015 at 4:31 Comment(0)
E
8

What I can read from whatwg.org it's correct to use in body: http://www.whatwg.org/specs/web-apps/current-work/multipage/semantics.html#the-meta-element

I use meta tags in the body of my blogg to specify the "datePublished" and "dateUpdated" properties. Googles Rich Snippets Testing Tool tells me it's correct and w3c validates the code.

Etruscan answered 28/4, 2012 at 20:57 Comment(2)
Erik's experience mirrors my own. I had to move them to the body in order for the rich snippet testing tool to recognize them. Our search results in Google shows them properly extracting since we're seeing those attributes in the results.Kindred
dateUpdated no longer exists on this page http://schema.org/docs/full.htmlProphet
W
5

I do it this way:

<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"> 
Whomp answered 23/4, 2012 at 11:13 Comment(2)
according to Schema.org , when you use itemprop on meta tag u should omit name & ... and only use itemprop & content :)Molal
It’s not valid to have an itemprop and a name attributes on meta. It’s either or. (And this comes directly from Microdata, not (only) from the Schema.org vocabulary.)Deiform
O
5

You can use:

<meta itemprop="">

in the body of the page to do schema.org semantic markup that is machine readable (by robots, for SEO, for instance) even if you don't want to display the actual text (product name, for example) on the page.

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

Sometimes, a web page has information that would be valuable to mark up, but the information can't be marked up because of the way it appears on the page. The information may be conveyed in an image (for example, an image used to represent a rating of 4 out of 5) or a Flash object (for example, the duration of a video clip), or it may be implied but not stated explicitly on the page (for example, the currency of a price).

Otis answered 25/8, 2012 at 2:59 Comment(1)
lets not forget to use content on meta tag too ! <meta itemprop="" content="">Molal
I
3

When first working with schema.org's microdata, I added the meta tags in the head tag of my web page but when I ran that page against Google's Rich Snippets Testing Tool, the data was not extracted. I then moved the meta tags into the body of the page and the data was shown as being extracted.

Irairacund answered 24/4, 2012 at 0:46 Comment(0)

© 2022 - 2024 — McMap. All rights reserved.