开放时间语义html的结构化数据

时间:2013-11-10 13:39:56

标签: html5 w3c-validation microdata schema.org structured-data

我应该用HTML5微数据来标记公司的营业时间。 在Google和schema.org上搜索了一下后,我编写了以下代码:

<time itemprop="openingHours" datetime="Mo 13:00-17:30"><span class="day">Maandag:</span>   <span class="hours">13:00-17:30</span></time>
<time itemprop="openingHours" datetime="Tu 09:00-17:30"><span class="day">Dinsdag:</span>   <span class="hours">09:00-17:30</span></time>
<time itemprop="openingHours" datetime="We 09:00-17:30"><span class="day">Woensdag:</span>  <span class="hours">09:00-17:30</span></time>
<time itemprop="openingHours" datetime="Th 09:00-17:30"><span class="day">Donderdag:</span> <span class="hours">09:00-17:30</span></time>
<time itemprop="openingHours" datetime="Fr 09:00-21:00"><span class="day">Vrijdag:</span>   <span class="hours">09:00-21:00</span></time>
<time itemprop="openingHours" datetime="Sa 08:30-15:00"><span class="day">Zaterag:</span>   <span class="hours">08:30-15:00</span></time>

当我使用Google的结构化数据测试工具检查网站时,我发现结构化数据已被正确识别。 问题是这个赋值的一个要求是它符合W3C的HTML验证器。对于每个时间元素,我得到以下错误。

Bad value Mo 13:00-17:30 for attribute datetime on element time: The literal did not satisfy the time-datetime format.

我明白为什么我会收到这个错误,我没有得到的是我如何以HTML5微数据标记的方式指定我的开放时间,并且根据HTML5验证器它们也是有效的HTML。

希望你们能帮助我解决这个问题。 :)

3 个答案:

答案 0 :(得分:4)

W3C HTML Checker的维护者( aka 验证者)在这里。我编写了执行该检查的代码。问题中的值Mo 13:00-17:30不符合给出the allowed values of datetime的HTML规范中的规则。

Mo 13:00-17:30似乎试图指定一个特殊的时间范围:一周中的某一天加上一个时间范围。

但HTML规范不允许该值采用该格式。它允许的最接近的格式是ISO8601格式duration string

有效的持续时间字符串:datetime="4h 30m"

尽可能接近,因为在HTML规范中,指定持续时间的规则必须是一个小时+分钟+秒的单个表达式。所以:

  • 持续时间表达式,指定一对次(如问题所示)无效
  • 作为指定星期几的持续时间的表达无效

答案 1 :(得分:1)

我使用data代替time - 适用于validator.w3.org以及www.google.com/webmasters/tools/richsnippets<data itemprop="openingHours" value="Mo-Su 07:00-22:00">7 days a week, 7 am to 22 pm</data> 感谢Hixie关于freenode#whatwg。

答案 2 :(得分:1)

如果datetime格式导致验证失败,您可以将操作时间放在meta标记元素中:

  <meta itemprop="openingHours" content="Mo,Tu 11..." />
  <meta itemprop="openingHours" content="We,Th 12..." />
  ...

According to the specs,如果meta元素具有itemprop属性,则$randomElement = rand(0,$room_number); $query="SELECT * FROM set_ballot"; $rs= mysqli_query($cn, $query); while($row = mysqli_fetch_array($rs)) { $room_number = $row['room_number']; } 元素将在那里有效。