出现在 Web 服务架构中的 tns

Posted

技术标签:

【中文标题】出现在 Web 服务架构中的 tns【英文标题】:tns appearing in Web Services schema 【发布时间】:2011-09-09 10:54:58 【问题描述】:

我正在使用 JAX-WS 运行一些示例 Web 服务。发布 Web 服务后,当我键入 WSDL URL 时,我可以看到 WSDL 文档。 WSDL 文档指的是这样的 Schema 文档:

<xs:schema version="1.0" targetNamespace="http://ts.ch01/">
<xs:element name="getTimeAsElapsed" type="tns:getTimeAsElapsed"/>
<xs:element name="getTimeAsElapsedResponse" type="tns:getTimeAsElapsedResponse"/>
<xs:element name="getTimeAsString" type="tns:getTimeAsString"/>
<xs:element name="getTimeAsStringResponse" type="tns:getTimeAsStringResponse"/>
−
<xs:complexType name="getTimeAsString">
<xs:sequence/>
</xs:complexType>
−
<xs:complexType name="getTimeAsStringResponse">
−
<xs:sequence>
<xs:element name="return" type="xs:string" minOccurs="0"/>
</xs:sequence>
</xs:complexType>
−
<xs:complexType name="getTimeAsElapsed">
<xs:sequence/>
</xs:complexType>
−
<xs:complexType name="getTimeAsElapsedResponse">
−
<xs:sequence>
<xs:element name="return" type="xs:long"/>
</xs:sequence>
</xs:complexType>
</xs:schema>

我的问题是为什么元素声明中会出现“tns”?例如:

&lt;xs:element name="getTimeAsElapsed" type="tns:getTimeAsElapsed"/&gt;

我没有看到将“tns”声明为命名空间前缀的架构文档,架构文档只是以

开头
<xs:schema version="1.0" targetNamespace="http://ts.ch01/">

那么为什么在引用其他元素时会出现“tns”?这是 JAX-WS 生成的 XML 模式的默认行为吗?

【问题讨论】:

这里只是一个健全性检查(你的例子中的那些破折号让我怀疑):如果我在 Firefox 中查看一个 XML 文档(模式或其他),它会对文档进行一些样式设置,例如它删除命名空间声明。右键->查看页面源返回原来的 @Per,你是对的。我可以通过查看源代码来查看前缀和其他详细信息。当我打开 IE 时,我也可以看到所有其他命名空间声明...... 【参考方案1】:

根据 w3,tns 表示“此命名空间”,指的是当前文档。

来源:https://www.w3.org/TR/wsdl.html#_notational

【讨论】:

tns = 这个命名空间 (y) tns = 目标命名空间 链接文档中的任何位置均未出现“tns”或“此命名空间”。 @rkedge 是的,确实如此:““此命名空间”(tns)前缀用作引用当前文档的约定。” @ScottBrickey 我发表评论时没有。该链接已于 3 月更新。我的评论现在已经过时了。【参考方案2】:

您需要将整个 wsdl 文档视为一个大的 xml 文件。在这种情况下,使用在子元素的根元素(定义元素)处声明的命名空间前缀是有效的。

不需要在模式(模式元素)根元素中声明 tns 命名空间。但是,如果您将架构分开到一个文件中,那么您需要有 tns 前缀。

【讨论】:

以上是关于出现在 Web 服务架构中的 tns的主要内容,如果未能解决你的问题,请参考以下文章

LNMP架构

GraphQL 在微服务架构中的实践

云原生架构中的Web及Web API安全

Web服务器处理连接请求的架构方式

OSGi 捆绑为插件架构中的 SOAP Web 服务

python中的Web服务,用于获取Big Query中表的架构信息