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

osc*_*tin 36 xml url xml-namespaces

以这一行为例:

<configuration xmlns:xdt="http://schemas.microsoft.com/XML-Document-Transform">
</configuration>
Run Code Online (Sandbox Code Playgroud)

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

Mic*_*Kay 17

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

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

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


ska*_*man 10

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

  • @oscilatingcretin:命名空间是*任意*标识符.你可以把任何你想要的东西放在那里("Grabblesnackers"),但是使用URI是按惯例完成的,大概是因为如果你控制域,它肯定是唯一的. (6认同)
  • 好的.删除了最后一条评论,所以我向仍在回复它的任何人道歉.所以它基本上都是武断的.一个有着大假发的人说:"我们将把我们的URI作为http加上前缀,即使超文本传输​​协议甚至不是等式的一部分.没有任何押韵或理由,但我有一个大假发在这里和所以我们将继续使用http作为前缀.为什么是http而不是ftp?好吧,因为我这么说." 这就是我对事物的看法.伙计们,谢谢你的讨论. (6认同)
  • 这是一篇很好的文章,为什么XML命名空间是URI,以及为什么它是一个错误:http://www.xml.com/pub/a/2005/04/13/namespace-uris.html (4认同)
  • @oscilatingcretin:`Schemas.Microsoft.XmlDocumentTransform`仍然是一个URI,并且和其他任何东西一样有效.然而,更广泛的惯例是使用URL样式的URI - 它只是一个约定*. (3认同)
  • @Robert:我不同意.XML名称空间URI在使用它们的上下文中只需要是唯一的*.理想情况下,除此之外,是的,但仅适用于公共架构. (2认同)
  • @skaffman:它不是"只是一个约定" - 它是如何定义XML命名空间的.请参阅http://www.w3.org/TR/xml-names/ - 第2.1节 - "定义:XML名称空间由URI引用[RFC3986]标识".正如本文档所说,它们可以是URL或URN,它提供了很多范围. (2认同)

Gre*_*egC 5

W3解释在这里

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

XML 文档格式已由负责 HTML 的同一个人风格化,因此您可能会发现格式元素在语法上有相似之处。在语义上,dotNET 和 XML 命名空间服务于相同的目标。

  • 我知道这很旧,但没有人回答@oscilatingcretin。假设是 microsoft.com 归微软所有,因此在某种意义上是“可控的”。无论如何都不是完美的,但是 Microsoft 并且只有 Microsoft 可以将架构发布到 microsoft.com/xyz。除非他们忘记更新域名等... :) (4认同)
  • 此外,这里有几个人说 URL 样式的命名空间提供了唯一性,但我不知道如何。任何 URI 格式都没有唯一性保证,无论是 XML 还是 .NET 样式的命名空间(除非您谈论的是 URL)。在我看来,将“http”和“.com”扔到命名空间中没有任何逻辑支持。如果有人未能续订域名注册而其他人购买了它(啊哈微软)怎么办?他们的 URL-style URI 现在有什么好处?没有一致性,imo。 (3认同)
  • 以何种方式合理?还没有人解决我的问题,即为什么 URL 样式的命名空间有意义。HTTP(超文本传输​​协议)与它有什么关系?为什么不是FTP?有人告诉我为什么 http://schemas.microsoft.com/XML-Document-Transform 比 Microsoft.Schemas.XmlDocumentTransform 更有意义。我知道我很久以前就选择了一个答案,但我只想进一步讨论这个话题 (2认同)