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,但它们都能实现我的预期.
据我所知,唯一合法的直接子ul和ol是li因此不能是任何歧义,对不对?
那么,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)