21

一个组织的网站,比如“Sun Industries”,想要添加一个员工列表。该组织的地址和联系信息已经出现在网页上,但员工名单会在其他地方。

所以我们有

<div id="organization" itemscope itemtype="http://schema.org/Organization">
  <span itemprop="name">Sun Industries</span>,
  <span itemprop="location" itemscope itemtype="http://schema.org/Place">
    <span itemprop="address" itemscope itemtype="http://schema.org/PostalAddress">
      <span itemprop="streetAddress">Technologies Street 42</span>,
      <span itemprop="addressLocality">Venustown</span>
      <span itemprop="postalCode">98765</span>
    </span>
  </span>
</div>

稍后在 HTML5 代码中,我们将拥有

<div id="employee-1" itemscope itemtype="http://schema.org/Person">
  <span itemprop="name">John Doe</span>,
  <span itemprop="jobTitle">Sales Manager</span>
</div>

我们如何将“组织”和“员工 1”这两个对象联系在一起?

我尝试将以下子项添加到“employee-1”对象

<meta itemprop="worksFor" itemscope itemtype="http://schema.org/Organization" itemref="organization">

但这不起作用(至少在 Google 的结构化数据测试工具中不起作用)。

itemref在这种情况下如何正确使用微数据属性?

为了清楚起见,我还尝试了以下方法:

  • 添加itemprop="worksFor"到“组织”对象。
  • 添加itemref="organization"到“员工”对象。

所以

<div id="organization" itemprop="worksFor" itemscope itemtype="http://schema.org/Organization">
  <span itemprop="name">Sun Industries</span>,
  ...
</div>
...
<div id="employee-1" itemscope itemtype="http://schema.org/Person" itemref="organization">
  <span itemprop="name">John Doe</span>,
  <span itemprop="jobTitle">Sales Manager</span>
</div>

但这给了我一个Warning: Page contains property "worksfor" which is not part of the schema.“组织”对象。

4

3 回答 3

28

好吧,实际上您的最后一个代码片段看起来不错。也许使用Yandex Validator输出会更清晰

person
  itemType = http://schema.org/Person
  worksfor
    organization
      itemType = http://schema.org/Organization
      name = Sun Industries
  name = John Doe
  jobtitle = Sales Manager

其他几个工作示例。

<body>
  <div id="organization" itemscope itemtype="http://schema.org/Organization" itemref="employee-1">
    <span itemprop="name">Sun Industries</span>,
    <span itemprop="location" itemscope itemtype="http://schema.org/Place">
      <span itemprop="address" itemscope itemtype="http://schema.org/PostalAddress">
        <span itemprop="streetAddress">Technologies Street 42</span>,
        <span itemprop="addressLocality">Venustown</span>
        <span itemprop="postalCode">98765</span>
      </span>
    </span>
  </div>
  <div id="employee-1" itemprop="employee" itemscope itemtype="http://schema.org/Person">
    <span itemprop="name">John Doe</span>,
    <span itemprop="jobTitle">Sales Manager</span>
  </div>
</body>

给出以下内容:

organization
  itemType = http://schema.org/Organization
  employee
    person
      itemType = http://schema.org/Person
      name = John Doe
      jobtitle = Sales Manager
  name = Sun Industries
  location
    place
      itemType = http://schema.org/Place
      address
        postaladdress
          itemType = http://schema.org/PostalAddress
          streetaddress = Technologies Street 42
          addresslocality = Venustown
          postalcode = 98765

或这个

<body>
  <div id="employee-1" itemscope itemtype="http://schema.org/Person">
    <span itemprop="name">John Doe</span>,
    <span itemprop="jobTitle">Sales Manager</span>
    <meta itemprop="worksFor" itemscope itemtype="http://schema.org/Organization"  itemref="organization">
  </div>
  <div id="organization">
    <span itemprop="name">Sun Industries</span>,
    <span itemprop="location" itemscope itemtype="http://schema.org/Place">
      <span itemprop="address" itemscope itemtype="http://schema.org/PostalAddress">
        <span itemprop="streetAddress">Technologies Street 42</span>,
        <span itemprop="addressLocality">Venustown</span>
        <span itemprop="postalCode">98765</span>
      </span>
    </span>
  </div>
</body>

这导致

person
  itemType = http://schema.org/Person
  name = John Doe
  jobtitle = Sales Manager
  worksfor
    organization
    itemType = http://schema.org/Organization
    name = Sun Industries
    location
      place      
        itemType = http://schema.org/Place
        address
          postaladdress
            itemType = http://schema.org/PostalAddress
            streetaddress = Technologies Street 42
            addresslocality = Venustown
            postalcode = 98765

规范对使用itemref不是很清楚,但示例有帮助

<div itemscope id="amanda" itemref="a b"></div>
<p id="a">Name: <span itemprop="name">Amanda</span></p>
<div id="b" itemprop="band" itemscope itemref="c"></div>
<div id="c">
 <p>Band: <span itemprop="name">Jazz Band</span></p>
 <p>Size: <span itemprop="size">12</span> players</p>
</div>
于 2013-06-21T07:40:47.313 回答
6

你的最后一个例子是正确的。
(谷歌的测试工具不再给出上述错误。当时他们可能没有更新到 Schema.org 词汇表的新内容。)

规格

规范链接itemref

tl;博士

  1. 您指定要添加属性itemref的元素(带有)。itemscope
  2. 您指定要添加id的元素 (with )。itemprop

例子

一个最小的例子:

<div itemprop="worksFor" itemscope itemtype="http://schema.org/Organization" id="org">
  <!-- this property (worksFor) gets added to the Person item below -->
</div>

<div itemscope itemtype="http://schema.org/Person" itemref="org">
  <!-- looks for the element with the ID "org" -->
</div>

这相当于:

<div itemscope itemtype="http://schema.org/Person">

  <div itemprop="worksFor" itemscope itemtype="http://schema.org/Organization">
  </div>

</div>

其他示例:

要牢记

  • itemref属性只能用于同一文档中的元素。

  • 您可以从一个属性引用多个元素itemref(用空格字符分隔 ID 标记)。

  • 引用的元素可以是多个属性的容器。

  • 您必须确保引用的元素不是带有 的元素的子元素itemscope,否则它们的属性将添加到此项目中(但您可以通过添加 dummyitemscope来规避这一点)。

于 2015-11-29T15:24:25.550 回答
1

有两种方法可以将模式数据链接在一起。

  1. itemid:链接 2 个完整对象(即组织和人员)
  2. itemref : 将 1 个完整对象链接到 1 个不完整对象(即文章和评论)

第一个很容易。您所做的就是将itemid属性添加到您希望链接的项目上并link在其他项目上添加:

<div itemid='#org' itemscope itemType='http://schema.org/Organization'>
    <!-- ..... -->
</div>

<article itemscope itemType='http://schema.org/Article'>
    <link itemprop='publisher' href='#org'>
</article>

第二个没那么容易。如果您的博客文章的评论在很远的地方怎么办。您如何将它们连接到您的博客文章?您可以创建一个带有 id 的空项目,然后将其连接到您的博客文章,如下所示:

<div id="comments" itemscope>
    <span itemprop="commentCount">0</span>
</div>

<div id="words" itemscope>
    <span itemprop="wordCount">0</span>
</div>

我们不需要给评论一个itemType. 我们只需要添加itemscope. 这样我们就不会出现验证错误。现在我们可以将评论链接回博客文章,如下所示:

<div itemscope itemtype="http://schema.org/BlogPosting" itemref="comments words">
    <!-- .... -->
</div>

多田!我们甚至还设法导入wordCount

于 2018-02-01T22:35:20.730 回答