我正在学习xml和xml处理。我无法理解命名空间的存在。
我知道Namespace帮助我们在xml中分隔相同的命名元素。我们不能通过具有相同名称的属性来区分元素吗?为什么命名空间很重要或需要?
我想举个例子:
<persons>
<person></person>
<s:person xmlns:s="student"></s:person>
<person type="student"></person>
</persons>
第一个人是普通元素。第二个使用命名空间和第三个使用类型属性。我们不能使用第三个而不是第二个吗?
答案 0 :(得分:4)
当然,您可以使用不同的名称区分对象及其属性 - 只要您完全控制所有XML数据即可!
但请考虑一下:您需要与第三方Web服务或以XML格式向您发送数据的数据接口进行集成。如果该Web服务或该数据接口也实现<Person>
该怎么办?除了第三方实施的可能完全不同的人之外,你如何保持自己的人格?
这就是XML命名空间背后的想法 - 这就是为什么让它们全球唯一这一点非常重要,这导致了对它们使用URI(域名)的做法 - 因为“google.com”域肯定只会存在一次 - 全球。
答案 1 :(得分:0)
使用属性和命名空间之间的区别在于语义。在您的示例中,学生是人的子类。如果您使用了标记table
怎么办?数据库表和木表不是同一个通用表的子类 - 它们是完全不同的概念,因此使用不同的命名空间是有意义的。
当然,如果它是你自己的应用程序,那么不需要命名空间,但是如果你使用的是另一个应用程序的XML,并且它们的命名空间是XML,那么你也需要命名它
有关详细信息,请查看W3Schools上的XML Namespaces。