关于javascript:createElement与createElementNS

createElement vs. createElementNS

这两者之间的真正区别是什么?我的意思是真正的,根本的区别。
常规createElement的未来前景如何?

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

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

在常规html中ns的目的是什么?我应该在现有代码中将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中,并且它们经常使用XLink(另一个XML名称空间)。具有相应名称空间的许多其他XML模式用于在客户端和服务器之间传递消息以及用于数据存储。

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

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

在将createElementNS与命名空间URI结合使用时,您可能应该尝试始终将setAttributeNS与命名空间URI结合使用。

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

"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名称空间使XML处理应用程序知道它们要处理的内容,并允许将多种XML混合在同一文档中。

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

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

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