HTML / HTML5的默认命名空间是什么?

时间:2015-12-22 02:13:58

标签: html xml html5 xml-namespaces

根据这个page由一些名为" w3c"的用户提供。 HTML的默认命名空间是:

http://www.w3.org/1999/xhtml

他显然是错的,因为xhtml被用于基于XML的HTML4标准失败。我应该使用什么是正确的命名空间?

背景: 我正在编写一个使用XML的应用程序。我希望能够使用命名空间在XML节点上保存数据。例如,

<s:Button width="100" height="100" html:color="blue" color="black" /> 

XML解析器需要&#34; html&#34;的名称空间。前缀有效。

2 个答案:

答案 0 :(得分:11)

正如W3C所记录的那样,谁是XML和HTML规范背后的主体(WHATWG有一个单独的HTML 5规范,但虽然它在某些方面与W3C规范不同步,WHATWG仍然认为它是W3C&将规范标准化为REC的角色,与XML序列化(有时称为XHTML)一起使用的HTML命名空间是http://www.w3.org/1999/xhtml

此命名空间涵盖了迄今为止已经指定的包含XHTML 1.0和1.1的XML序列化的所有HTML版本,这些版本已经使用了十多年,XHTML 2.0引入了几个模块化的想法,但可以说更为重要。几个想法的孵化器,而不是实现版本,&#34; HTML5序列化为XML&#34;有时也称为XHTML5。

由于另一个人在比赛中有关于如何指定HTML 5的内容是WHATWG,您可能会注意到,如果您将HTML5序列化为XML,那么您必须使用名称空间http://www.w3.org/1999/xhtml并且使用其他序列化要么不使用命名空间,要么使用该命名空间。每https://wiki.whatwg.org/wiki/FAQ#What_is_the_namespace_declaration.3F

  

在XHTML中,您需要指定命名空间。

     

<html xmlns="http://www.w3.org/1999/xhtml">

     

在HTML中,xmlns属性当前允许在任何HTML元素上使用,但前提是它具有值“http://www.w3.org/1999/xhtml”。它根本不做任何事情,只允许从XHTML1轻松迁移。它实际上不是HTML中的名称空间声明,因为HTML还不支持名称空间。请参阅HTML中支持名称空间的问题。

下一个常见问题解答也与此相关:

  

HTML是根据DOM定义的,在解析text / html期间,所有HTML元素都将自动放入HTML命名空间http://www.w3.org/1999/xhtml。但是,与XHTML序列化不同,HTML序列化中没有真正的命名空间语法(请参阅上一个问题)。换句话说,您不需要像在XHTML中那样在HTML标记中声明命名空间。但是,只要命名空间为http://www.w3.org/1999/xhtml,就可以在每个HTML元素上放置xmlns属性。

     

此外,HTML语法提供了一种嵌入MathML和SVG元素的方法。放置在容器元素mathsvg内的元素将分别由解析器自动放入MathML命名空间或SVG命名空间中。不需要命名空间语法,但如果其值是正确的命名空间,则允许xmlns属性。

     

总之,虽然HTML不允许使用XML命名空间语法,但是有一种方法可以嵌入MathML和SVG,并且xmlns属性可以在给定约束下的任何元素上使用,其方式在DOM上是合理兼容的水平。

答案 1 :(得分:4)

XHTML

以下默认名称空间声明是XHTML中的required,用于严格符合文档:

<html xmlns="http://www.w3.org/1999/xhtml">
  

文档的根元素必须包含xmlns声明   XHTML名称空间[XMLNS]。 XHTML的命名空间定义为   http://www.w3.org/1999/xhtml

HTML5

HTML5中相同的默认命名空间声明为optional

<html xmlns="http://www.w3.org/1999/xhtml">
  

...您不需要像HTML一样在HTML标记中声明命名空间   在XHTML中做。但是,您可以放置​​xmlns属性   每个HTML元素,只要名称空间是   http://www.w3.org/1999/xhtml