【问题标题】:Are nested time tags valid in HTML5 (in expressing time period/duration)?嵌套时间标签在 HTML5 中是否有效(表示时间段/持续时间)?
【发布时间】:2015-12-19 15:27:35
【问题描述】:

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

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

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

【问题讨论】:

    标签: html datetime semantics


    【解决方案1】:

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

    简而言之:time 元素如果具有datetime 属性,则可以包含“Phrasing Content”,否则只能包含“Text”; time 元素本身就是短语内容。上面的内容绝对是这种情况。

    至于是否在语义上正确(以及其他方面是否符合,因为语义正确性是 HTML 文档的符合性要求)这个较长的问题,必须考虑以下几点:

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

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

    【讨论】:

    • “外部time 元素在语义上不可接受”,但是afaik 也无法表示时间段的开始。所以,基本上不可能用当前的规范表达我想要的,对吧?
    【解决方案2】:

    这是来自 W3C

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

    可能存在日期时间属性。如果存在,它的值必须是 以机器可读的格式表示元素的内容。

    没有日期时间内容属性的时间元素必须 没有任何元素后代。

    这是参考

    http://www.w3.org/TR/html5/text-level-semantics.html#the-time-element

    【讨论】:

    • 这与它们是否可以嵌套无关:相关部分是“可以使用此元素的上下文”和“内容模型”。
    • ……您刚刚在规范中发现了一个规范性矛盾。耶! :\ 而且它也出现在维护得更好的 WHATWG 规范中……
    • 但是,是的,根据它在“内容模型”中所说的以及元素所属的“类别”,它只能包含“短语内容”元素作为子元素,因此不能包含“任何”。
    • 我稍微更新了答案。所以这不是我的考虑.. 现在只有 w3c 所说的...任何人都可以像喜欢一样思考..
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-10-12
    • 1970-01-01
    • 2018-10-13
    • 2014-01-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多