【发布时间】:2015-12-19 15:27:35
【问题描述】:
我试图用<time> 标签来表达一个时间段,我想用这个:
<time datetime="P4Y"><time>2000</time>-<time>2004</time></time>
这是否有效且语义正确?如果没有,有没有更好/更简单的方式来表达类似的东西?
【问题讨论】:
我试图用<time> 标签来表达一个时间段,我想用这个:
<time datetime="P4Y"><time>2000</time>-<time>2004</time></time>
这是否有效且语义正确?如果没有,有没有更好/更简单的方式来表达类似的东西?
【问题讨论】:
WHATWG 和 W3C 规范都说了同样的话:这至少符合内容模型(这可能是您所说的“有效”,只要一致性检查器会接受它) time 元素(尽管(几乎未维护的)W3C 分支在其定义中包含矛盾,whatwg/html#426)。
简而言之:time 元素如果具有datetime 属性,则可以包含“Phrasing Content”,否则只能包含“Text”; time 元素本身就是短语内容。上面的内容绝对是这种情况。
至于是否在语义上正确(以及其他方面是否符合,因为语义正确性是 HTML 文档的符合性要求)这个较长的问题,必须考虑以下几点:
时间元素表示其内容,以及这些内容在 datetime 属性中的机器可读形式。
现在,这里的问题是<time>2000</time>-<time>2004</time> 是否与P4Y 具有相同的含义(即,它的内容和机器可读的日期时间属性是否仅在形式上有所不同):我想说这里很明确这里有两种不同的语义。在内容中,您表示的是从 2000 年到 2004 年的特定时间间隔;在该属性中,您代表的是一个通用的四年持续时间。这两个不相同,因此外部的time 元素在语义上是不可接受的。
【讨论】:
time 元素在语义上不可接受”,但是afaik 也无法表示时间段的开始。所以,基本上不可能用当前的规范表达我想要的,对吧?
这是来自 W3C
时间元素表示其内容,以及 datetime 属性中这些内容的机器可读形式。这 种类内容仅限于各种日期、时间、时区 偏移量和持续时间,如下所述。
可能存在日期时间属性。如果存在,它的值必须是 以机器可读的格式表示元素的内容。
没有日期时间内容属性的时间元素必须 没有任何元素后代。
这是参考
http://www.w3.org/TR/html5/text-level-semantics.html#the-time-element
【讨论】: