如何从Microdata中的多个Schema.org事件中引用描述?

时间:2016-07-26 21:08:55

标签: html5 microdata

我有一个页面,其中包含多个具有相同属性(名称,位置,描述等)的Schema.org事件。我通过这样的方式弄清楚如何处理位置:

doc.xpath(".//op[..][..]")

但是,我无法弄清楚如何为事件的描述做到这一点。我已经完成了类似的操作,这使得Google的结构化数据测试工具中的事件显示为空白描述:

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

我做错了什么?

1 个答案:

答案 0 :(得分:2)

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的结构化数据测试工具将使用id元素的Place值来显示@idI think that’s a bug下的URI,所以不要这让你感到困惑。如果你想摆脱它,你可以添加一个itemid属性,除了为这个地方提供真实/实际的URI。)