我有一个页面,其中包含多个具有相同属性(名称,位置,描述等)的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>
我做错了什么?
答案 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
值来显示@id
。I think that’s a bug下的URI,所以不要这让你感到困惑。如果你想摆脱它,你可以添加一个itemid
属性,除了为这个地方提供真实/实际的URI。)