我试图用<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-时间元素