0

<types/>在 wsdl部分 中定义类型时,我似乎有一些选择。

如果我定义了一个类型(简单或复杂),那么我可以像这样引用该类型:<message> <part name="x" type="tns:myTypeName"/>

如果我将<types/>部分中的元素定义为 an<element/>然后我可以像这样引用它:<message> <part name="x" element="myElementName"/>

这两个选项似乎都通过了验证。我已经看到了一些元素方法的例子,但我没有看到类型方法有什么问题。哪一个是正确的?

4

2 回答 2

1

任何一个都是一种选择,但它们具有不同的含义。

如果使用元素,则在消息中指定元素的名称、命名空间和类型。如果您指定type,那么您只指定类型。那么在实践中, partWSDLmessage元素中的 指定了元素的名称,但是名称空间是不明确的。

这是不兼容的常见来源。WS-I BP 1.1规范指定使用,而element不是type,因为这样可以防止歧义。


我已经有几年没有阅读 WS-I BP 1.1 文档了。我现在记得它比我回忆的要复杂。

type如果要创建 RPC/Literal 服务,则必须使用。element如果您正在创建文档/文字服务,则必须使用。在这两种情况下,WSDL 中属性的使用都有限制,namespace原因是我指定的:防止歧义。

除其他外,参见4.7.21。部件访问器的子项的命名空间

WS-I 的存在暗示了一件事情:不要手动创建 WSDL,期望模式验证为您生成有效的服务。相反,请使用您选择的 Web 服务框架提供的工具。这至少将您产生的歧义种类减少到每个框架一组。

于 2013-02-16T23:12:33.323 回答
0

好的,我刚刚找到了答案。根据规范,任何一个都是一种选择。 http://www.w3.org/TR/wsdl#_messages

这似乎暗示如果使用类型,则只允许一部分。使用元素引用可以在消息中指定许多部分。然而,情况似乎并非如此。有关详细信息,请参考上面John Saunder 的帖子

于 2013-02-16T23:08:56.263 回答