CreateElement 与 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 第二层规范,但我仍然感到困惑。

32298 次浏览

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

如果只有一个名称空间,那么名称空间的用途是什么?

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

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

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

所以我们使用 createElementNS (ns _ string,‘ svg’) ,然后是 setAttributeNS (null,,)。为什么? 为什么不是 setAttributeNS (‘ my _ ns’,,) ? ? ?

当将 createElementNS与名称空间 URI 一起使用时,您可能应该尝试始终如一地将 setAttributeNS与名称空间 URI 一起使用。

XML 的定义分为多个步骤。该规范的第一个版本没有提到名称空间,但是保留了足够的语法,以便通过使用前缀和特殊的 xmlns属性,可以在没有名称空间的 XML 之上指定带有名称空间的 XML。XML 规范表示:

”XML 推荐中的名称空间[ XML 名称]为包含冒号字符的名称赋予一个意义。因此,除名称空间外,作者不应在 XML 名称中使用冒号,但 XML 处理程序必须接受冒号作为名称字符。”

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

为什么 ns _ string 必须是“ http://www.w3.org/2000/svg

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

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