如何在微数据中引用多个 Schema.org 事件的描述?

How do I reference a description from multiple Schema.org Events in Microdata?

我有一个页面包含多个具有相同属性(名称、位置、描述等)的 Schema.org 事件。我已经想出如何通过做这样的事情来处理位置:

<div itemscope itemtype="http://schema.org/Event">
  …
  <meta itemprop="location" itemscope itemtype="http://schema.org/Place" itemref="venue-place" />
</div>

<span id="venue-place">
  <a href="http://www.example.com/" itemprop="url">
    <span itemprop="name">Crystal Ballroom</span>
  </a>

  <span itemprop="address" itemscope itemtype="http://schema.org/PostalAddress">
    <span itemprop="streetAddress">1332 W Burnside St.</span>
    <span itemprop="addressLocality">Portland</span>,
    <span itemprop="addressRegion">OR</span>
    <span itemprop="postalCode">97209</span>
  </span>
</span>

但是,对于事件的描述,我不知道该怎么做。我做过这样的事情,这使得空描述出现在 Google 的结构化数据测试工具中的事件中:

<div itemscope itemtype="http://schema.org/Event">
  …
  <meta itemprop="description" itemscope itemref="event-summary" />
</div>

<div id="event-summary">
  This is the description text.
</div>

我做错了什么?

itemref属性允许您引用属性(itemprop),并且必须在项目上指定(itemscope),这些属性应该被添加到。

所以你必须

  • itemref="event-summary"移动到Event元素,并且
  • itemprop="description" 移动到具有描述的元素。
<div itemscope itemtype="http://schema.org/Event" itemref="event-summary">
</div>

<div itemprop="description" id="event-summary">
</div>

您最好也为 location 执行此操作,因为 meta 元素没有 content 属性是无效的(但这可以通过添加空属性来解决), 因为你可以用这种方式保存一个元素。

<div itemscope itemtype="http://schema.org/Event" itemref="venue-place event-summary">
</div>

<div itemprop="location" itemscope itemtype="http://schema.org/Place" id="venue-place">
</div>

<div itemprop="description" id="event-summary">
</div>

(请注意,Google 的结构化数据测试工具将使用 Place 元素的 id 值来显示 @id 下的 URI。 在他们的最后,所以不要让这让你感到困惑。如果你想摆脱它,除了为该地点提供 real/actual URI 之外,你还可以添加一个 itemid 属性。)