Xhtml HTML属性命名空间

Xhtml HTML属性命名空间,xhtml,attributes,namespaces,Xhtml,Attributes,Namespaces,我有一个简单的html文档 <!DOCTYPE html> <html xmlns="http://www.w3.org/1999/xhtml" xmlns="http://www.w3.org/2000/xmlns xmlns:bar="http://www.foo.com/schemas/bar"> <head> </head> <body> <img src="penguins.

我有一个简单的html文档

<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml"
      xmlns="http://www.w3.org/2000/xmlns
      xmlns:bar="http://www.foo.com/schemas/bar">
 <head>
 </head>
 <body>
        <img src="penguins.png" bar:xwidth="300"/>
 </body>
</html>


任意前缀的名称空间解析是XML特性,而不是HTML特性。因此,如果您使用
应用程序/xhtml+xml
mime类型为页面提供服务,那么浏览器将使用xml解析器,您的命名空间将按照您的意愿进行解析

浏览器的HTML解析器根本不支持前缀/名称空间解析,除非在解析嵌入式SVG和MathML时,其中非常小的属性列表被“神奇地”转换,例如
xml:lang
xlink:href
。您自己的名称空间永远不受支持

HTML文档中的
innerHTML
与HTML解析器的工作方式完全相同

(尤其要注意IE的HTML解析器,它有自己的概念来处理名称中带有冒号的元素和属性。不过,您仍然无法获得namespaceURI的值)

因此,您唯一的选择是:(i)使用
应用程序/xhtml+xml
;(ii)使用脚本构建名称空间属性;或者(iii)不要使用名称空间属性