我的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服务本身的端点与命名空间的端点不同,但仍然存在。
答案 0 :(得分:10)
来自@jww问题:
问题是名称空间的终点(=&#34; http:// xxxxx / ws&#34;) 需要是一个有效的网址?
不,XML命名空间采用URI的词法形式,但根据W3C Recommendation: Namespaces in XML 1.0 (Third Edition)不必检索:
属性的标准化值必须是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服务的规范或操作中随时都没有影响。