gpt4 book ai didi

xhtml - HTML 属性命名空间

转载 作者:行者123 更新时间:2023-12-04 03:03:15 25 4
gpt4 key购买 nike

我有一个简单的 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>

当我在 Chrome 或 Firefox 调试器(或 Javascript)中检查属性 bar:xwidth 时,我希望发现该属性的 namespaceURI 将是“http://www.foo.com/schemas/bar”,不幸的是它是空的。

问题似乎是元素/属性的解析与编程构造。在 Javascript 中,我可以构建我想要的内容,但是任何解析、加载上面的内容或 element.innerHTML = "",都会产生一个具有 null 命名空间的属性。

关于如何使属性的 namespaceURI 正确的任何想法?

最佳答案

任意前缀的 namespace 解析是一种 XML 功能,而不是 HTML 功能。因此,如果您使用 application/xhtml+xml mime 类型为您的页面提供服务,这将导致浏览器使用 XML 解析器,并且您的 namespace 将按照您的意图进行解析。

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

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

(特别注意 IE 的 HTML 解析器,它有自己的概念来处理名称中带有冒号的元素和属性。尽管如此,您仍然不会获得 namespaceURI 的值)

所以您唯一的选择是:(i) 使用application/xhtml+xml; (ii) 使用脚本构建您的命名空间属性;或者 (iii) 不要使用命名空间属性。

关于xhtml - HTML 属性命名空间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13502687/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com