首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >createElement与createElementNS

createElement与createElementNS
EN

Stack Overflow用户
提问于 2011-11-18 03:40:36
回答 1查看 30.1K关注 0票数 70

这两者之间的真正区别是什么?我的意思是真正的,本质的区别。常规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规范。但我还是很困惑。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-11-18 03:52:10

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

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

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

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

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

所以我们使用createElementNS(ns_string,'svg'),然后使用setAttributeNS(null,,)。为什么?为什么不使用setAttributeNS('my_ns',,)?

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

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

“XML建议XML Names中的名称空间为包含冒号字符的名称赋予了含义。因此,作者不应在XML名称中使用冒号,但XML处理器必须接受冒号作为名称字符。”

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

为什么ns_string必须是"http://www.w3.org/2000/svg

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

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

票数 61
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8173217

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档