createElement 与 createElementNS

发布于 2024-12-16 14:33:48 字数 569 浏览 0 评论 0原文

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

What's the real difference between those two? I mean real, essential difference.
What's the future holding for regular createElement?

Svg is xml, not html. I get that. So we use createElementNS(ns_string, 'svg')
And then setAttributeNS(null,,). Why?
Why not setAttributeNS('my_ns',,)?

Why must ns_string be http://www.w3.org/2000/svg and not some random string? What's the purpose of a namespace if there is only one namespace?

What's the purpose of ns in regular html? Should I change all instances of createElement to createElementNS in my existing code?

I am reading the DOM-Level-2 spec. but I'm still puzzled.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

烟雨扶苏 2024-12-23 14:33:48

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

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

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

SVG 和 MathML 是两种 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 的其他方言。

To understand the problem namespaces are trying to solve, consider file extensions. 3-letter file extensions have done a really bad job of describing the content of files. They're ambiguous and don't carry version info. XML namespaces use a larger space of strings, URIs, to solve the same problem, and use short prefixes so you can succinctly mix multiple kinds of XML in the same document.

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

There are many namespaces used to identify different kinds of XML, and different versions of those kind.

SVG and MathML are two kinds of XML each with their own namespaces that can be embedded in HTML5, and they often use XLink, another XML namespace. Many other XML schemas, with corresponding namespaces, are used for passing messages between clients and servers and for data storage.

XHTML is an attempt to express HTML as valid XML. It has its own namespace.

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

You should probably try to consistently use setAttributeNS with a namespace URI when using createElementNS with a namespace URI.

XML was defined in multiple steps. The first version of the spec said nothing about namespaces but left enough syntax so that XML with namespaces could be specified on top of XML without namespaces by using prefixes and special xmlns attributes. The XML specification says:

"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 namespaces let XML processing applications know what they're dealing with, and allow multiple kinds of XML to be mixed together in the same document.

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

This includes the year that version of SVG was standardized, 2000, so it carries useful information.

When used with xmlns:svg it also lets the browser know that the svg: prefix means SVG and not some other dialect of XML.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文