1.2*_*tts 5 html xml html5 xml-namespaces
根据这个名为"w3c"的用户的页面,HTML的默认命名空间是:
http://www.w3.org/1999/xhtml
Run Code Online (Sandbox Code Playgroud)
他显然是错的,因为xhtml被用于基于XML的HTML4标准失败.我应该使用什么是正确的命名空间?
背景:我正在编写一个使用XML的应用程序.我希望能够使用命名空间在XML节点上保存数据.例如,
<s:Button width="100" height="100" html:color="blue" color="black" />
Run Code Online (Sandbox Code Playgroud)
XML解析器需要"html"前缀的命名空间才有效.
Jon*_*nna 14
正如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 1.0和1.1已经使用了十多年,XHTML 2.0引入了几个模块化的想法,但可以说它更像是一个孵化器.几个想法而不是实现版本,"HTML5序列化为XML",有时称为XHTML5.
由于WHATWG中有另外一个关于如何指定HTML 5的马匹,你可能会注意到,如果你将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中,当前允许在任何HTML元素上使用xmlns属性,但前提是它具有值" http://www.w3.org/1999/xhtml ".它根本不做任何事情,只允许从XHTML1轻松迁移.它实际上不是HTML中的名称空间声明,因为HTML还不支持名称空间.请参阅HTML中是否支持名称空间的问题.
下一个FAQ也与此相关:
HTML是根据DOM定义的,在解析text/html期间,所有HTML元素都将自动放入HTML命名空间中
http://www.w3.org/1999/xhtml
.但是,与XHTML序列化不同,HTML序列化中没有真正的命名空间语法(请参阅上一个问题).换句话说,您不需要像在XHTML中那样在HTML标记中声明命名空间.但是,只要命名空间是,就可以在每个HTML元素上放置xmlns属性http://www.w3.org/1999/xhtml
.此外,HTML语法提供了一种嵌入MathML和SVG元素的方法.放置在容器元素内的元素
math
或svg
将由解析器分别自动放入MathML命名空间或SVG命名空间中.不需要命名空间语法,但如果其值是正确的命名空间,则允许xmlns属性.总之,虽然HTML不允许XML命名空间语法,但是有一种方法可以嵌入MathML和SVG,并且xmlns属性可以在给定约束下的任何元素上使用,其方式在DOM级别上是合理兼容的.
对于严格符合规范的文档,XHTML 中需要以下默认命名空间声明:
<html xmlns="http://www.w3.org/1999/xhtml">
Run Code Online (Sandbox Code Playgroud)
文档的根元素必须包含 XHTML 命名空间 [XMLNS] 的 xmlns 声明。XHTML 的命名空间定义为 http://www.w3.org/1999/xhtml
相同的默认命名空间声明在 HTML5 中是可选的:
<html xmlns="http://www.w3.org/1999/xhtml">
Run Code Online (Sandbox Code Playgroud)
...您不需要像在 XHTML 中那样在 HTML 标记中声明名称空间。但是,只要命名空间为 http://www.w3.org/1999/xhtml ,您就可以在每个 HTML 元素上放置 xmlns 属性
归档时间: |
|
查看次数: |
6348 次 |
最近记录: |