gpt4 book ai didi

javascript - createElement 与 createElementNS

转载 作者:IT王子 更新时间:2023-10-29 02:55:20 27 4
gpt4 key购买 nike

这两者之间的真正区别是什么?我的意思是真正的,本质上的区别。常规 createElement 的 future 是什么?

Svg 是 xml,不是 html。我明白了。所以我们使用 createElementNS(ns_string, 'svg')然后是 setAttributeNS(null,,)。为什么?为什么不 setAttributeNS('my_ns',,)

为什么 ns_string 必须是 http://www.w3.org/2000/svg 而不是一些随机字符串?如果只有一个命名空间,命名空间有什么用?

ns 在常规 html 中的用途是什么?我是否应该将现有代码中的所有 createElement 实例更改为 createElementNS

我正在阅读 DOM-Level-2规范但我还是很困惑。

最佳答案

要了解命名空间试图解决的问题,请考虑文件扩展名。 3 个字母的文件扩展名在描述文件内容方面做得非常糟糕。它们是模棱两可的,不携带版本信息。 XML 命名空间使用更大空间的字符串、URI 来解决相同的问题,并使用短前缀,以便您可以在同一文档中简洁地混合多种 XML。

What's the purpose of namespace if there is only one name space?

有许多命名空间用于标识不同类型的 XML 以及这些类型的不同版本。

SVG 和 MathML 是两种 XML,每一种都有自己的命名空间,可以嵌入到 HTML5 中,它们通常使用另一种 XML 命名空间 XLink。许多其他具有相应命名空间的 XML 模式用于在客户端和服务器之间传递消息以及用于数据存储。

XHTML 试图将 HTML 表示为有效的 XML。它有自己的命名空间。

So we use createElementNS(ns_string, 'svg') And then setAttributeNS(null,,). Why? Why not setAttributeNS('my_ns',,)???

当使用带有命名空间 URI 的 createElementNS 时,您可能应该尝试始终将 setAttributeNS 与命名空间 URI 一起使用。

XML 是在多个步骤中定义的。该规范的第一个版本没有提及 namespace ,但保留了足够的语法,因此可以通过使用前缀和特殊的 xmlns 属性在没有 namespace 的 XML 之上指定具有 namespace 的 XML。 XML specification说:

"The Namespaces in XML Recommendation [XML Names] assigns a meaning to names containing colon characters. Therefore, authors should not use the colon in XML names except for namespace purposes, but XML processors must accept the colon as a name character."

XML namespace 让 XML 处理应用程序知道它们正在处理什么,并允许在同一个文档中混合使用多种 XML。

Why ns_string must be "http://www.w3.org/2000/svg"

这包括 SVG 版本标准化的年份,即 2000 年,因此它包含有用的信息。

当与 xmlns:svg 一起使用时,它还让浏览器知道 svg: 前缀表示 SVG 而不是 XML 的其他方言。

关于javascript - createElement 与 createElementNS,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8173217/

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