何时结束</ li>不是可选的?

mpe*_*pen 6 html5

W3说:

一个li元件的端标签可以,如果被省略li元件之后紧接着另一个li元件或者如果在父元素没有更多的内容.

但是这个:

<ol>
    <li>one
    <li>two
    <li>three
        <ol>
            <li>three.one
            <li>three.two
        </ol>
    <li>four
</ol>
Run Code Online (Sandbox Code Playgroud)

看起来很好.

我不知道四个是否li被认为是"紧跟三个" li,因为有一个ol中间.规范并不是很清楚 - 从技术上讲,文本"one"代表一个TextNode,所以两个li并不是真正紧随其后.

实际上是否有</li>必要关闭的场景?

我只安装了Chrome和Firefox,但它们都能实现我的预期.

据我所知,唯一合法的直接子ulolli因此不能是任何歧义,对不对?

use*_*621 8

那么,W3C所说的是什么

一个li元素的结束标记是强制性的,如果li元素紧跟着比别的东西另一个li元素,或者如果有更多的父元素的内容.

这怎么可能?li元素只能出现ols,uls和menus中.但是ols和uls只允许lis作为他们的孩子.

怎么样menu?它也允许流内容.所以你有它:

<menu>
    <li>foo</li> <!-- mandatory -->
    <a href="//example.com">bar</a>
</menu>

<menu>
    <li>foo</li> <!-- mandatory -->
    Hello, I am text content!
</menu>
Run Code Online (Sandbox Code Playgroud)

当您看到示例时,很明显省略结束标记会使解析器无法确定li结束的位置.


编辑:作为@BoltClock指出的下方,script并且template现在元素允许过:

<ul> <!-- or ol or menu -->
    <li>foo</li> <!-- mandatory -->
    <script></script>
</ul>
Run Code Online (Sandbox Code Playgroud)