При определении и обращении к сообщению обычно используется targetNamespace определения следующим образом:
<wsdl:definition targetNamespace="x" xmlns:tns="x">
<wsdl:message name="msg"></message>
<wsdl:portType name="port">
<wsdl:operation name="operation">
<wsdl:input message="tns:msg"/>
...
Таким образом, имя сообщения "msg"
определяется внутри пространства имен x
, которое также является targetNamespace.
Если у меня есть импорт WSDL, я могу указать другое targetNamespace и использовать сообщения из этого пространства имен:
<wsdl:definition targetNamespace="x" xmlns:tns="x" xmlns:doc="y">
<wsdl:import location="doc.wsdl" namespace="y">
<wsdl:portType name="port">
<wsdl:operation name="operation">
<wsdl:input message="doc:msg"/>
...
с дополнительным doc.wsdl
файлом, определяющим сообщение в targetnamespacedoc:
<wsdl:definition targetNamespace="y" xmlns:tns="y" xmlns:doc="y">
<wsdl:message name="msg">...
В этом случае сообщение находится в другом пространстве имен.
Интересно, могу ли я сохранить это дополнительное пространство имен для сообщения при объединении двух файлов WSDL (удаляя импортдля создания автономной версии)?
<wsdl:message xmlns="y" name="msg">
или <wsdl:message name="doc:msg">
, кажется, не работает, и нет атрибута targetNamespace
для message
, кажется.
Я говорюWSDL 1.1, но я думаю, что он похож на 2.0?