你把Schema Microdata meta标签放在html体内吗?

时间:2012-04-23 11:00:39

标签: html html5 microdata schema.org

我已经在互联网和stackoverflow上搜索了很长时间来回答这个问题,我发现链接表明你不应该把meta标签放在正文中:

而schema.org网站清楚地显示了元标记直接嵌套在正文http://schema.org/AggregateRating

看看那里发布的例子

 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>

如果您要将元标记保留在<head>中,那么您如何将这两个日期与其评论相关联? <meta itemprop="datePublished" content="2011-04-01"> <meta itemprop="datePublished" content="2011-03-25">

这引起了混乱,我想知道如何正确地做到这一点。

6 个答案:

答案 0 :(得分:73)

如果是meta元素

  • 具有itemprop属性和content属性,以及
  • 没有name属性,没有http-equiv属性,没有charset属性,

然后在meta中使用此body是有效的。 (如果值是网址,则为must use link instead。)

为什么呢?因为the Microdata specification changes HTML5

(在某些情况下请注意RDFa also changes HTML5 by allowing meta in the body。)


  

如果您要将meta标记保留在<head>中,那么您如何将这两个日期与其评论相关联?

你可以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采用以空格分隔的id值列表,因此您甚至可以引用两个或更多元素。只需将应添加到项目中的所有元素(包含id属性)的itemprop添加到其itemref属性中,例如:itemref="date author rating"

答案 1 :(得分:8)

我可以从whatwg.org上读到它在身体中使用的正确性:http://www.whatwg.org/specs/web-apps/current-work/multipage/semantics.html#the-meta-element

我在blogg的主体中使用meta标签来指定&#34; datePublished&#34;和&#34; dateUpdated&#34;属性。谷歌Rich Snippets Testing Tool告诉我它是正确的,w3c验证了代码。

答案 2 :(得分:8)

还要记住,可以完全避免HTML标记并使用完全包含在<head> anywhere in the HTML document (even dynamically injected!)中的JSON-LD标记,如下所示:

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

查看schema.org中的示例,它们通常包含JSON示例标记,例如https://schema.org/Restaurant

这是关于它的另一篇好文章http://www.seoskeptic.com/json-ld-google-knowledge-graph-schema-org-seo/

答案 3 :(得分:4)

您可以使用:

<meta itemprop="">

在页面正文中进行schema.org语义标记即机器可读(例如机器人,对于搜索引擎优化),即使您不想显示实际文本(例如,产品名称)页面。

请参阅:http://schema.org/docs/gs.html#advanced_missing

  

有时,网页上的信息对标记很有价值   up,但由于它的方式,信息无法标记   出现在页面上。信息可以在图像中传达(for   例如,用于表示5分中4分的图像或Flash   对象(例如,视频剪辑的持续时间),或者可能是   隐含但未在页面上明确说明(例如,   价格的货币)。

答案 4 :(得分:3)

我是这样做的:

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

答案 5 :(得分:3)

首次使用schema.org的微数据时,我在网页的head标签中添加了元标记,但是当我针对Google's Rich Snippets Testing Tool运行该页面时,未提取数据。然后我将元标记移动到页面主体中,数据显示为已提取。