显式声明默认xhtml命名空间的优点

时间:2011-11-11 14:52:04

标签: xml xhtml namespaces

如果我有一个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>

  . . .

1 个答案:

答案 0 :(得分:2)

在兼容HTML5的浏览器中,HTML序列化中HTML元素的默认命名空间为http://www.w3.org/1999/xhtml

在XHTML序列化中,适用XML规则。如果未使用xmlns=分配默认命名空间,则未加前缀的元素将不在命名空间中,浏览器将无法理解如何解释您的标记。从这个意义上讲,您需要显式声明默认命名空间。

...然而

无论您使用的是HTML序列化还是XHTML序列化,都不取决于DOCTYPE,而取决于内容类型。如果您使用application/xhtml+xml等XML内容类型提供页面,则只能获得XHTML序列化。

如果您提供的内容类型为text/html的页面(并且我愿意打赌,因为几乎每个人都这样做),那么您使用的是HTML序列化,而您的XHTML 1.0 Strict doctype则为no后果。在这种情况下,默认命名空间声明除了保持验证器安静外什么都没有。