HTML 默认命名空间与显式命名空间

HTML default namespace vs. explicit namespace

为什么在 Chrome 上无法正确呈现:

<h:html xmlns:h="http://www.w3.org/1999/xhtml">
  <h:head/>
  <h:body>
    <h:ul>
      <h:li>
        A
      </h:li>
      <h:li>
        B
      </h:li> 
    </h:ul>
  </h:body>
</h:html>

虽然这确实正确呈现? :

<html xmlns="http://www.w3.org/1999/xhtml">
  <head/>
  <body>
    <ul>
      <li>
        A
      </li>
      <li>
        B
      </li> 
    </ul>
  </body>
</html>

我在这里错过了什么?默认名称空间的行为不应该与显式指定名称空间相同吗?

HTML 不是 XML。

当我在 Chrome 中使用 application/xml Content-Type 测试您的代码时,您的代码工作正常。

它不像 text/html 那样工作。

HTML 允许 xmlns 属性与 XML 兼容,并且它允许在其中嵌入一些 XML(例如 SVG),但是 HTML 解析器不支持 HTML 元素的命名空间别名。