我试图用<time>
标签来表达时间段,我想用这个:
<time datetime="P4Y"><time>2000</time>-<time>2004</time></time>
这是否有效且语义正确?如果没有,有没有更好/更简单的方式表达这样的东西?
答案 0 :(得分:2)
WHATWG和W3C规范都说同样的事情:这至少符合内容模型(这可能是你的意思&#34;有效&#34;,只要一个一致性检查器会接受它{)time
元素(虽然(几乎没有维护)W3C分支在其定义中包含一个矛盾,whatwg/html#426)。
简而言之:time
元素可以包含&#34; Phrasing Content&#34;如果它具有datetime
属性,则只能包含&#34; Text&#34 ;; time
元素本身就是Phrasing Content。你的上述情况绝对如此。
至于更长的问题是否在语义上是正确的(以及其他符合,因为语义正确性是HTML文档的一致性要求),必须考虑以下事项:
time元素表示其内容,以及datetime属性中这些内容的机器可读形式。
现在,问题是<time>2000</time>-<time>2004</time>
是否与P4Y
具有相同的含义(即,它的内容和机器可读的datetime属性是否仅在形式上有所不同):I&# 39; d说它在这里非常明确,这里有两种不同的语义。在内容中,您将表示2000年至2004年的特定时间间隔;在属性中,您代表一般的四年持续时间。这两个不一样,因此外部time
元素在语义上是不可接受的。
答案 1 :(得分:0)
这是来自W3C
时间元素表示其内容,以及a datetime属性中这些内容的机器可读形式。该 种类内容仅限于各种日期,时间,时区 偏移和持续时间,如下所述。
可能存在日期时间属性。如果存在,其值必须为a 以机器可读的格式表示元素的内容。
必须具有datetime content属性的time元素 没有任何元素后代。
这是参考
http://www.w3.org/TR/html5/text-level-semantics.html#the-time-element