是否可以检索XML命名空间名称URI?

时间:2014-12-23 04:00:50

标签: web-services xsd wsdl wsdl2java

我的WSDL上有以下标记:

<?xml version='1.0' encoding='UTF-8'?>
<definitions name="" targetNamespace="http://xxxxx/ws"
             xmlns="http://schemas.xmlsoap.org/wsdl/"
             xmlns:s0="http://xxxxx/ws"
             xmlns:s1="http://schemas.xmlsoap.org/wsdl/soap/">
  <types>
    <xsd:schema attributeFormDefault="qualified" 
                elementFormDefault="qualified"
                targetNamespace="http://xxxxx/ws/comments" 
                xmlns:http="http://schemas.xmlsoap.org/wsdl/http/" 
                xmlns:mime="http://schemas.xmlsoap.org/wsdl/mime/" 
                xmlns:s0="http://xxxxx/ws" 
                xmlns:s1="http://schemas.xmlsoap.org/wsdl/soap/" 
                xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" 
                xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/" 
                xmlns:tns="http://xxxxx/ws" 
                xmlns:tnsc="http://xxxxx/ws/comments" 
                xmlns:xsd="http://www.w3.org/2001/XMLSchema" 
                xmlns:y="http://new.webservice.namespace">

此后,类型被限定为s0,s1 ...名称空间中的类型。

问题是命名空间端点(=“http:// xxxxx / ws”)是否需要是有效的URL? 如果端点不再存在 - 是否意味着我们需要再次为Web服务重新生成存根代理?

注意:Web服务本身的端点与命名空间的端点不同,但仍然存在。

1 个答案:

答案 0 :(得分:10)

命名空间是不需要检索的URI

  

来自@jww问题:

     

问题是名称空间的终点(=&#34; http:// xxxxx / ws&#34;)   需要是一个有效的网址?

不,XML命名空间采用URI的词法形式,但根据W3C Recommendation: Namespaces in XML 1.0 (Third Edition)不必检索

  

属性的标准化值必须是URI引用 -   标识名称空间的名称空间名称 - 或空字符串。该   命名空间名称,为了达到预期目的,应该有   独特性和持久性的特征。 这不是目标   它可以直接用于检索模式(如果有的话)   存在)。

为什么在不需要检索URI的情况下使用URI?

  

来自@jww后续评论

     

http:如果可检索的目的是什么?他们不应该   使用null:之类的信号表示私信?否则怎么办   像我这样的人知道它什么时候是私人的,什么时候被弃用或者   撤回?我想我要问的是,什么是信令   机制?

许多人,包括我自己,确实建议将名称空间URI作为文档或管理XSD本身进行检索。但是,如上所示,它不是必需的。此外,a conformant, validating XML processor need not even report when a namespace name is not a URI

  

为了符合此规范,处理器必须报告违规   名称空间良好形成,但不是    REQUIRED 检查命名空间名称是否为URI引用[RFC3986]。

出于这个原因,您有时会在命名空间名称中看到非URI,特别是对于快速丢弃的示例。 (Howeiver,在这种情况下使用http://www.example.org/topic可能更合适。)

使用URI是因为它们是一种方便的机制,用于表达具有内置权限规范的资源的唯一性 - 域的所有者是负责人用于使用域定义的名称空间。

命名空间作为端点

  

来自@jww后续评论

     

如果端点不再存在 - 这是否意味着我们需要   再次为webservice重新生成存根代理?

不,您甚至不应将名称空间称为端点。命名空间名称URI的可检索性在Web服务的规范或操作中随时都没有影响。