67

我在互联网和 stackoverflow 上搜索了很长时间来寻找这个问题的答案,我发现链接说你不应该在正文中放置元标记:

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

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

4

6 回答 6

79

如果一个meta元素

  • 有一个itemprop属性和一个content属性,并且
  • 没有name属性,没有http-equiv属性,没有charset属性,

那么metabody. (如果值为 URL,则必须使用link.

为什么?因为微数据规范改变了 HTML5

(请注意,某些情况下, RDFa 还通过允许更改 HTML5 。)metabody


如果您将meta标签保留在 中<head>,那么您如何将这两个日期与他们的评论联系起来?

您可以使用该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">…&lt;/span>
  </div>

</body>
</html>

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

于 2014-03-14T20:54:32.283 回答
9

还要记住,可以完全避免 HTML 标记并使用完全包含在 HTML 文档中的<head> 任何位置(甚至是动态注入!)的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/

于 2015-05-13T04:31:40.627 回答
8

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

我在博客正文中使用元标记来指定“datePublished”和“dateUpdated”属性。Googles Rich Snippets Testing Tool告诉我它是正确的,并且 w3c 验证了代码。

于 2012-04-28T20:57:36.913 回答
5

您可以使用:

<meta itemprop="">

即使您不想在页面上显示实际文本(例如产品名称),也可以在页面正文中进行机器可读的 schema.org 语义标记(例如机器人,用于 SEO)。

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

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

于 2012-08-25T02:59:26.890 回答
4

我这样做:

<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"> 
于 2012-04-23T11:13:44.133 回答
3

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

于 2012-04-24T00:46:49.703 回答