嵌套的时间标记在HTML5中是否有效(表示时间段/持续时间)



我试图用<time>标签来表达一个时间段,我想到了使用这个:

<time datetime="P4Y"><time>2000</time>-<time>2004</time></time>

这是否有效且语义正确?如果没有,有没有更好/更简单的方式来表达这样的东西?

WHATWG和W3C规范都说了同样的话:这至少符合time元素的内容模型(这可能就是你所说的"有效",只要一致性检查器接受它)(尽管(几乎未维护的)W3C分叉在其定义中包含矛盾,WHATWG/html/#426)。

简而言之:如果time元素具有datetime属性,则它可以包含"Phrasing Content",否则它只能包含"Text";CCD_ 5元素本身就是短语内容。你上面所说的绝对是这样。

至于更长的问题,它在语义上是否正确(以及在其他方面是否一致,因为语义正确性是HTML文档的一致性要求),必须考虑以下内容:

time元素表示其内容,以及datetime属性中这些内容的机器可读形式。

现在,这里的问题是<time>2000</time>-<time>2004</time>是否与P4Y具有相同的含义(即,它的内容和机器可读的日期时间属性是否仅在形式上不同):我想说,这里有两种不同的语义,这一点很清楚。在内容中,您代表的是从2000年到2004年的特定时间间隔;在属性中,您表示一个通用的四年持续时间。这两者不相同,因此外部time元素在语义上是不可接受的。

这来自W3C

时间元素表示其内容,以及datetime属性中这些内容的机器可读形式。这个内容种类限于各种日期、时间、时区偏移和持续时间,如下所述。

datetime属性可能存在。如果存在,其值必须为以机器可读格式表示元素的内容。

没有datetime内容属性的时间元素必须没有任何元素子体

这是参考

http://www.w3.org/TR/html5/text-level-semantics.html#the-时间元素

最新更新