需要 XML 命名空间吗?

Fre*_*ood 2 xml namespaces

我正在学习 xml 和 xml 处理。我无法很好地理解命名空间的存在。

我了解到命名空间帮助我们在 xml 中分离同名元素。我们不能通过具有相同名称的属性来区分元素吗?为什么命名空间很重要或需要?

我想举个例子:

<persons>
  <person></person>
  <s:person xmlns:s="student"></s:person>
  <person type="student"></person>
</persons>
Run Code Online (Sandbox Code Playgroud)

第一人称是普通元素。第二人称使用命名空间,第三人称使用类型属性。我们不能用第三个代替第二个吗?

mar*_*c_s 5

当然,您可以使用不同的名称来区分对象及其属性——只要您完全控制所有 XML 数据即可!

但请考虑一下:您需要与第三方 Web 服务或以 XML 格式向您发送数据的数据接口集成。如果该 Web 服务或该数据接口也实现了<Person>? 您如何将自己的人员类型与第三方实施的可能完全不同的人员类型区分开来?

这就是 XML 命名空间背后的想法——这就是为什么让它们在全球范围内唯一非常重要的原因,这导致了为它们使用 URI(域名)的做法——因为“google.com”域肯定只存在一次——在全球范围内.

  • +1 这可能是我遇到过的对 XML 命名空间最有用的解释。 (3认同)