我按照schema.org上的说明在其网站上添加了公司的营业时间,但是,W3C HTML validator不喜欢它> _<它给了我以下错误:
错误值Mo-Fr 09:00-19:00关于元素时间的属性日期时间:文字不符合时间 - 日期时间格式。
以下是 HTML :
<div>
<p>Office Hours:</p>
<p><time itemprop="openingHours" datetime="Mo-Fr 09:00-19:00">Monday-Friday: 9:00 am to 7:00 pm</time></p>
<p><time itemprop="openingHours" datetime="Sa 10:00-17:00">Saturdays: 10:00 am to 5:00 pm</time></p>
<p><time itemprop="openingHours" datetime="Su 11:00-16:00">Sundays: 11:00 am to 4:00 pm</time></p>
</div>
我做错了什么?
答案 0 :(得分:5)
你做错了什么:
HTML规范不支持您尝试代表的工作日和小时的范围。您的标记不是严格有效的HTML,但您可以说它是有效的HTML + Schema.org(尽管没有明确的标准)。
time
元素用于特定日期,时间和/或时区数据。它也可以用一段时间(电影的运行时,作为一个真实世界的例子,看起来像2h 11m 33s
)。规范中没有列出支持一系列日期和时间的有效值。
HTML规范的Semantics section描述了time
的使用情况以及datetime
属性的有效值。以下是可接受值的几个示例:
有效日期字符串:
2011-11-18
有效的本地日期和时间字符串:
2011-11-18T14:54
有效周字符串:
2011-W47
有效期限字符串:
PT4H18M3S
有效的时区偏移字符串:
-08:00
在许多其他方面,其中没有一个对您的特定用例有用或适用。
你能做什么:
您可以尝试使用<data>
代替<time>
,例如:
<div itemscope itemtype="https://schema.org/LocalBusiness">
<p>Office Hours:</p>
<p><data itemprop="openingHours" value="Mo-Fr 09:00-19:00">Monday-Friday: 9:00 am to 7:00 pm</data></p>
<p><data itemprop="openingHours" value="Sa 10:00-17:00">Saturdays: 10:00 am to 5:00 pm</data></p>
<p><data itemprop="openingHours" value="Su 11:00-16:00">Sundays: 11:00 am to 4:00 pm</data></p>
</div>
哪个会验证,但它会绕过基于时间的数据规则(规范要求您使用<time>
),而您现在牺牲了语义来进行多余的验证。
另请注意包含<div>
。{/ p>中的itemscope and itemtype
我的一般意见:
我个人坚持使用Schema.org使用<time>
datetime
属性概述的示例。但理论上的上述例子应该可以正常工作。
这是一个很好的例子,说明为什么我不想为完美的验证而汗流。背。验证是一种有用的调试工具和质量检查,对于教授良好的标记实践非常重要。知道什么是有效的HTML看起来也很重要,使用验证器对于学习&#34;规则&#34; HTML的一部分 - 这样你就知道什么时候可以接受这些规则来适应你的特定用例。
基本上:不要出汗。使用Schema.org的好处超过了这几行无效标记的成本。