如何在元数据中实现Schema.org属性?

时间:2018-11-21 10:44:27

标签: html schema.org microdata

Schema.org描述了如何使用meta标签实现对象属性,但是给出的示例是具有基本类型(例如TextBoolean)的属性。假设我要显示一个图像网格,每个图像的类型为ImageObjectcopyrightHolder属性本身是OrganizationPerson。如果要包括组织的法定名称,我该如何仅使用元数据来做到这一点?

使用“常规” HTML元素,我会写:

<span itemprop="copyrightHolder" itemscope itemtype="http://schema.org/Organization">
  <span itemprop="legalName">ACME Inc.</span>
</span>

这显然不正确:

<meta itemprop="copyrightHolder" itemscope itemtype="http://schema.org/Organization">
  <meta itemprop="legalName" content="ACME Inc.">
</meta>

唯一想到的是使用一组隐藏的spandiv

2 个答案:

答案 0 :(得分:2)

使用微数据,如果您想提供页面上不可见的结构化数据,则可以使用以下元素:

  • link (带有itemprop)表示URL值
  • meta (带有itemprop)用于非URL的值
  • div / span (带有itemscope

所以您的示例如下所示:

<div itemscope itemtype="http://schema.org/ImageObject">
  <div itemprop="copyrightHolder" itemscope itemtype="http://schema.org/Organization">
    <meta itemprop="legalName" content="ACME Inc." />
  </div>
</div>

如果要在head元素中提供整个结构化数据(不允许使用div / span),请参见this answer。如果只想在head元素中提供一些属性,则可以make use of the itemref attribute

也就是说,如果您想以隐藏的方式提供大量数据,则可能要考虑使用JSON-LD而不是微数据(see a comparison)。

答案 1 :(得分:0)

我再次阅读《入门指南》,发现2b指出

  

浏览schema.org类型时,您会注意到许多属性具有“预期类型”。这意味着该属性的值本身可以是一个嵌入项(请参见第1d节:嵌入项)。但这不是必须的-可以只包含常规文本或URL。

所以我认为只用一次就可以了

<meta itemprop="copyrightHolder" content="ACME Inc.">