第五十六章 生成的 WSDL 的详细信息 - types中的名称空间
types
中的名称空间
web
服务的以下参数会影响<types>
部分中名称空间的使用:
- 如果指定了
TYPENAMESPACE
,则TYPENAMESPACE
控制<schema>
元素的targetNamespace
属性。 - 如果不指定
TYPENAMESPACE
,则targetNamespace
属性由NAMESPACE
参数指定。 -
RESPONSETYPENAMESPACE
控制响应使用的类型的targetNamespace
属性。 -
USECLASSNAMESPACES
控制<types>
是否也使用支持类型类中指定的名称空间。
每个支持xml
的类的NAMESPACE
参数也影响WSDL
的<types>
元素。
考虑前面显示的web
服务的以下变体:
Class WSDLSamples.Namespaces Extends %SOAP.WebService
{
Parameter SERVICENAME = "MyServiceName";
Parameter NAMESPACE = "https://www.mynamespace.org";
Parameter RESPONSENAMESPACE = "https://www.myresponsenamespace.org";
Parameter TYPENAMESPACE = "https://www.mytypes.org";
Parameter RESPONSETYPENAMESPACE = "https://www.myresponsetypes.org";
Parameter USECLASSNAMESPACES = 1;
/// adds two complex numbers
Method Add(a As ComplexNumberNS, b As ComplexNumberNS) As ComplexNumberNS [ WebMethod ]
{
Set sum = ##class(ComplexNumberNS).%New()
Set sum.Real = a.Real + b.Real
Set sum.Imaginary = a.Imaginary + b.Imaginary
Quit sum
}
}
类WSDLSamples.ComplexNumberNS
如下:
/// A complex number
Class WSDLSamples.ComplexNumberNS Extends (%RegisteredObject, %XML.Adaptor)
{
Parameter NAMESPACE = "https://www.complexnumbers.org";
Property Real As %Double;
Property Imaginary As %Double;
}
对于此web
服务的WSDL
, <types>
部分如下所示:
<types>
<s:schema elementFormDefault="qualified" targetNamespace="https://www.mytypes.org">
<s:import namespace="https://www.complexnumbers.org"/>
<s:element name="Add">
<s:complexType>
<s:sequence>
<s:element minOccurs="0" name="a" type="ns2:ComplexNumberNS"/>
<s:element minOccurs="0" name="b" type="ns2:ComplexNumberNS"/>
</s:sequence>
</s:complexType>
</s:element>
</s:schema>
<s:schema elementFormDefault="qualified" targetNamespace="https://www.complexnumbers.org">
<s:complexType name="ComplexNumberNS">
<s:sequence>
<s:element minOccurs="0" name="Real" type="s:double"/>
<s:element minOccurs="0" name="Imaginary" type="s:double"/>
</s:sequence>
</s:complexType>
</s:schema>
<s:schema elementFormDefault="qualified" targetNamespace="https://www.myresponsetypes.org">
<s:import namespace="https://www.complexnumbers.org"/>
<s:element name="AddResponse">
<s:complexType>
<s:sequence>
<s:element name="AddResult" type="ns2:ComplexNumberNS"/>
</s:sequence>
</s:complexType>
</s:element>
</s:schema>
</types>
网友评论