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 元素的命名空间别名。
为什么在 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 元素的命名空间别名。