为什么XML名称空间中的URL?

时间:2011-04-22 17:16:15

标签: xml url xml-namespaces

以这一行为例:

<configuration xmlns:xdt="http://schemas.microsoft.com/XML-Document-Transform">
</configuration>

一些简短的研究告诉我,不一定必须在该URL上托管。因此,如果它只是对本地程序集中包含的命名空间的引用,为什么要使用URL而不是像.NET(System.Data)通常使用的那些常规命名空间?

4 个答案:

答案 0 :(得分:16)

当你问为什么标准是这样的时候,对你的问题有两种可能的解释:(a)所做设计选择的感知效益是什么,以及(b)历史顺序是什么?导致这种设计的事件被采用而不是其他设计。

显然,使用类似HTTP的URI可以提供唯一性。但这也可以通过其他方式实现,例如通过发明新的URI方案。我认为,如果你追踪当时所做的论证,你会发现许多提倡使用HTTP风格的URI的人也提倡命名空间URI应该是不可分辨的,可能是模式或其他类型的文件。实际上,对于自己的命名空间来说,W3C策略总是存在一个文档,当您在浏览器中键入命名空间URI时,可以检索该文档,并且它应该告诉您关于命名空间的有用信息。

所以我怀疑我们使用的URI看起来是可以引用的,但是没有为它们被解除引用时发生的事情定义任何语义,实际上是委员会在两个或更多对立阵营之间妥协的结果。但你必须做一些适当的历史研究来证实这一点。

答案 1 :(得分:9)

这只是一个惯例。 URI(它们就是它们,而不是真正的URL)是一种方便且全球熟悉的识别资源的方式。另一方面,.NET风格的标识符对于.NET开发人员来说是熟悉和可识别的 - XML比.NET更多。

答案 2 :(得分:4)

W3 explanation Here

就像.NET中的命名空间一样,XML文档中的命名空间旨在帮助防止和解决名称冲突,尤其是当XML文档来自不同的组织和/或知识领域时。

XML文档格式由负责HTML的人员进行样式化,因此您可能会发现格式元素的语法相似性。从语义上讲,dotNET和XML名称空间服务于同一目标。

答案 3 :(得分:1)

问题的核心是名称空间必须是URI。这样的事情是没有充分理由的,因为它需要的是一个唯一的标识符来为定义的元素提供上下文。

由于它们必须是URI,所有可能性都是无意义的,因为即使命名空间与此类事物无关,也需要一个方案(例如http)。

所以要回答为什么这样的问题:就像所有不好的想法一样,当时有人认为这是一个好主意。