如果我有一个 xhtml 文档,我假设默认命名空间是“xhtml”。显式声明此默认命名空间有什么优点或缺点,例如:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xmlns:xi="http://www.w3.org/2001/XInclude">
<head>
. . .
最佳答案
在 HTML5 兼容浏览器中,HTML 序列化中 HTML 元素的默认命名空间是 http://www.w3.org/1999/xhtml
在 XHTML 序列化中,XML 规则适用。如果您不使用 xmlns=
分配默认命名空间,无前缀的元素将不在命名空间中,浏览器将无法理解如何解释您的标记。从这个意义上说,您需要显式声明默认命名空间。
然而...
使用 HTML 序列化还是 XHTML 序列化不取决于 DOCTYPE 而是取决于内容类型。如果您使用 XML 内容类型(例如 application/xhtml+xml
)提供页面,则您只会获得 XHTML 序列化。 .
如果您提供内容类型为 text/html
的页面(我敢打赌你是,因为几乎每个人都这样做)那么你正在使用 HTML 序列化并且你的 XHTML 1.0 Strict doctype 无关紧要。在这种情况下,默认命名空间声明除了保持验证器安静之外什么也没有。
关于xml - 显式声明默认 xhtml 命名空间的优点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8095655/