Microdata format for showing an event with multiple date/time

心不动则不痛 提交于 2020-01-06 14:48:13

问题


With Microdata, what is the best way to represent an event page with multiple date/time booking options? There will be occasions when the event page only has one booking option, i.e one set date/time, no alternative, does this require a different method?

<section>
  <h1>Tennis Lessons</h1>
  <ol>
    <li>Book Tickets for
      <time datetime="2001-05-15 19:00">May 15</time>
    </li>
    <li>Book Tickets for
      <time datetime="2001-05-16 19:00">May 16</time>
    </li>
    <li>Book Tickets for
      <time datetime="2001-05-17 19:00">May 17</time>
    </li>
  </ol>
</section>

Or is this the wrong way to approach it and the events are children of a product?

<section itemscope itemtype="http://schema.org/Product">
  <h1 itemprop="name">Tennis Lessons</h1>
  <ol>
    <li itemscope itemtype="http://schema.org/Event">Book Tickets for
      <time datetime="2001-05-15 19:00">May 15</time>
    </li>
    <li itemscope itemtype="http://schema.org/Event">Book Tickets for
      <time datetime="2001-05-16 19:00">May 16</time>
    </li>
    <li itemscope itemtype="http://schema.org/Event">Book Tickets for
      <time datetime="2001-05-17 19:00">May 17</time>
    </li>
  </ol>
</section>

In this case, on a booking confirmation page, it would then be correct to wrap the whole section in event Microdata as it then only has one possible date/time option?


回答1:


Schema.org defines that an Event happens "at a certain time". So each lesson should be represented by its own Event item.

If you can book a lesson on your page, you may want to use the offers property and provide an Offer for each Event.

The nesting in your second snippet (Event items inside the Product item) has no influence on the Microdata (example). You have to use a property (within the itemprop attribute) if you want to connect Microdata items.
While you could use Product to represent the fact that you provide the service of tennis lessons, it seems that the Product type is missing a suitable property to reference an Event item. The typical solution would be to use both types, but Microdata is rather limited in that regard (it works better with RDFa).

If you want to provide data that is the same for all events, you could make use of the itemref attribute (instead of repeating it for each event).

So a basic structure could be this:

<section>
  <h1>Tennis Lessons</h1>
  <p itemprop="description" id="event-desc">…</p>
  <ol>
    <li itemscope itemtype="http://schema.org/Event" itemref="event-desc">
      <div itemprop="offers" itemscope itemtype="http://schema.org/Offer">
      </div>
    </li>
    <li itemscope itemtype="http://schema.org/Event" itemref="event-desc">
      <div itemprop="offers" itemscope itemtype="http://schema.org/Offer">
      </div>
    </li>
  </ol>
</section>


来源:https://stackoverflow.com/questions/32274733/microdata-format-for-showing-an-event-with-multiple-date-time

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!