简体   繁体   English

您是否将架构微数据元标记放在 html 正文中?

[英]Do you put Schema Microdata meta tags in the html body?

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:我在 Internet 和 stackoverflow 上搜索了很长时间来寻找这个问题的答案,我找到了一些链接,说你不应该在正文中放置元标记:

while the schema.org website clearly shows the meta tags being nested directly in the body http://schema.org/AggregateRating而 schema.org 网站清楚地显示了直接嵌套在正文中的元标记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?如果您将元标记保留在<head> ,那么您将如何将这两个日期与他们的评论联系起来? <meta itemprop="datePublished" content="2011-04-01"> <meta itemprop="datePublished" content="2011-03-25"> <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.这引起了混乱,我想知道如何正确地做到这一点。

If a meta element如果一个meta元素

  • has an itemprop attribute and a content attribute, and有一个itemprop属性和一个content属性,以及
  • has no name attribute, no http-equiv attribute, and no charset attribute,没有name属性,没有http-equiv属性,也没有charset属性,

then it's valid to have this meta in the body .那么在body有这个meta是有效的。 (If the value is a URL, you must use link instead .) (如果值为 URL,则必须改用link 。)

Why?为什么? Because the Microdata specification changes HTML5 .因为微数据规范改变了 HTML5

(Note that RDFa also changes HTML5 by allowing meta in the body in some cases.) (请注意,在某些情况下, RDFa 还通过在body允许meta来更改 HTML5 。)


If you were to keep the meta tags in the <head> , then how would you relate these two dates to their reviews?如果您将meta标记保留在<head> ,那么您将如何将这两个日期与他们的评论联系起来?

You could use the itemref attribute :您可以使用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 takes a space-separated list of id values, so you can even reference two or more elements. itemref采用空格分隔的id值列表,因此您甚至可以引用两个或多个元素。 Just add the id of all elements (containing itemprop attributes) that should be added to the item to its itemref attribute, eg: itemref="date author rating" .只需将应添加到项目的所有元素(包含itemprop属性)的id添加到其itemref属性,例如: itemref="date author rating"

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:也请记住,它可能完全避免HTML标记和使用JSON-LD标记完全包含在<head>的HTML文档的任何地方(甚至是动态的注入!)是这样的:

<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 .查看schema.org中的示例,它们通常包含像https://schema.org/Restaurant这样的 JSON 示例标记。

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

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我可以从 whatwg.org 读到的内容在正文中使用是正确的: 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.我在博客正文中使用元标记来指定“datePublished”和“dateUpdated”属性。 Googles Rich Snippets Testing Tool tells me it's correct and w3c validates the code. Google 的Rich Snippets 测试工具告诉我它是正确的并且 w3c 验证了代码。

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.即使您不想在页面上显示实际文本(例如产品名称),也可以在页面正文中执行机器可读的 schema.org 语义标记(例如,通过机器人,用于 SEO)。

see: http://schema.org/docs/gs.html#advanced_missing请参阅: 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).信息可能在图像(例如,用于表示 5 分中的 4 分的图像)或 Flash 对象(例如,视频剪辑的持续时间)中传达,或者可能是隐含的但未明确说明在页面上(例如,价格的货币)。

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

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.第一次使用 schema.org 的微数据时,我在网页的 head 标记中添加了元标记,但是当我针对Google 的 Rich Snippets Testing Tool运行该页面时,未提取数据。 I then moved the meta tags into the body of the page and the data was shown as being extracted.然后我将元标记移动到页面正文中,数据显示为已提取。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM