Xsd 有没有这样的东西叫做;“虚拟URL”;对于名称空间?

Xsd 有没有这样的东西叫做;“虚拟URL”;对于名称空间?,xsd,wsdl,xml-namespaces,Xsd,Wsdl,Xml Namespaces,我在当前作业中继承的一个web服务包含具有以下命名空间定义的WSDL模式: <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:http="http://schemas.xmlsoap.org/wsdl/http/" xmlns:mime="http://schemas.xmlsoap.org/wsdl/mime/" xmlns:soap

我在当前作业中继承的一个web服务包含具有以下命名空间定义的WSDL模式:

<xs:schema 
  xmlns:xs="http://www.w3.org/2001/XMLSchema" 
  xmlns:http="http://schemas.xmlsoap.org/wsdl/http/" 
  xmlns:mime="http://schemas.xmlsoap.org/wsdl/mime/" 
  xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" 
  xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/" 
  xmlns:mns="http://my.example.com/sumproj/msgs.xsd" 
  xmlns:tns="http://my.example.com/sumproj" 
  xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" 
  targetNamespace="http://my.example.com/sumproj/msgs.xsd" 
  elementFormDefault="qualified">

上面列出的所有外部URL都可以通过web浏览器访问,但内部URL(my.example.com域)只会产生“找不到”错误:

未找到

在此服务器上找不到请求的URL/sumproj/msgs.xsd

由于询问某些事物为何以这种方式实现的人已经离开,我想知道这是一个bug还是一个特性:

  • 创作开发人员是否打算将名称空间XSD放在该服务器上,但没有实现它

  • 或者是某种类型的安全特性,其中URL只能由web服务通过配置XML访问,在实际访问localhost或类似内容时,有效地将此URL定义为虚拟URL

如果是后者,这是如何工作的,我可以在哪里了解更多

注意:上面的example.com仅用于说明,我不能透露我雇主的内部URL)

XML名称空间是URI(统一资源标识符),用于区分作者对元素“book”的含义,来自元素“book”的含义,因为它可能出现在任何其他XML文档中

如果我为我的模式选择一个名称空间,我需要绝对确保它不会与其他人可能选择的名称空间相同。为了确保这种冲突不会发生,作者通常让他们的名称空间以他们拥有的域名开头。这使它们看起来像URL,但实际上不需要使名称空间URI实际指向有用的资源或任何东西。像w3c这样有帮助的组织实际上在这些URI上发布资源,这就是上面文档中的外部名称空间工作的原因。

XML名称空间是URI(统一资源标识符),用于区分作者对元素“book”的含义,来自元素“book”的含义,因为它可能出现在任何其他XML文档中

如果我为我的模式选择一个名称空间,我需要绝对确保它不会与其他人可能选择的名称空间相同。为了确保这种冲突不会发生,作者通常让他们的名称空间以他们拥有的域名开头。这使它们看起来像URL,但实际上不需要使名称空间URI实际指向有用的资源或任何东西。像w3c这样的有帮助的组织实际上在这些URI上发布了资源,这就是上面文档中的外部名称空间起作用的原因。

创作开发人员是否打算将名称空间XSD放在该服务器上,而没有实现它

这是可能的,但不确定;如果不了解开发者的想法,就不可能有明确的答案。rational开发人员可能会采用任何一种方式——即使包括我在内的许多人都会说,将名称空间文档(可能以模式文档的形式,可能以RDDL文档的形式,可能以另一种形式)放在名称空间URI中是更好的做法和更合理的做法

或者是某种类型的安全特性,其中URL只能由web服务通过配置XML访问,在实际访问localhost或类似内容时,有效地将此URL定义为虚拟URL

这并非不可能,但这并不是一种似乎被广泛记录的设计技术。(至少,至少有一个XML极客从未听说过这个建议。)所以我猜答案是:可能不是原作者的意图

你能给我指一个权威的来源,我可以在那里读到这方面的信息吗

XML名称空间的权威来源是由Tim Bray等人编辑的文档“”和“”,并分别于2009年和2006年由万维网联盟发布

简洁地证明否定是困难的,但对规范的检查应该清楚地表明,它不要求用作名称空间名称的URI是可取消引用的。第2.1节说“XML名称空间由URI引用[RFC3986]标识”,但规范中没有要求取消对名称空间名称的引用。第2.3节将名称空间名称匹配过程定义为字符串标识的测试,并指出这意味着相同URI的等价形式(例如
http://www.example.org/wine
http://www.Example.org/wine
)就命名空间名称匹配而言,不计算为相等。如果要求命名空间处理器取消对命名空间名称的引用,这将毫无意义

W3C技术架构组(TAG)在it文档中从更高层次的角度讨论了这一复杂的问题。特别见

  • 第3.5节(阐明了“引用并不意味着取消引用”的原则):“应用程序开发人员或规范作者不应在每次引用时要求对表示进行网络检索。”
  • 关于XML名称空间的第4.5.3节
  • 第4.5.4节:名称空间文档(标签推荐)
另请参见(以及我的答案)

如果名称空间URL确实指向资源,这是否一定意味着WSDL模式必须在运行时与它进行协商

不可以。WSDL可以对WSDL文档中命名空间名称的使用施加额外的规则,但您引用的文档片段来自XSD架构文档。XSD规范不要求取消对命名空间名称的引用(尽管它确实建议将其作为查找XSD架构文档以便在验证事件中使用的一种可能策略)

如果答案是否定的,它能在运行时与之协商吗?或者它只是供人阅读吗

这是不禁止的