SoapNameSpace (メソッド・キーワード)
使用法
メソッドが (Web メソッドとして使用される場合に) 使用する既定の XML ネームスペースをオーバーライドするには、以下の構文を使用します。
Method name(formal_spec) As returnclass [ SoapNameSpace = "soapnamespace", WebMethod ]
{ //implementation }
soapnamespace はネームスペース URI です。URI にコロン (:) が含まれる場合、文字列は引用符で囲む必要があります。つまり、次のように使用できます。
Method MyMethod() [ SoapNameSpace = "http://www.mynamespace.org", WebMethod ]
また、次のようにすることもできます。
Method MyMethod() [ SoapNameSpace = othervalue, WebMethod ]
ただし、次のようにはできません。
Method MyMethod() [ SoapNameSpace = http://www.mynamespace.org, WebMethod ]
手動で作成した Web サービスでは、通常はこのキーワードの既定値が最適な値となります。SOAP ウィザードで WSDL から Web クライアントまたは Web サービスを生成すると、このキーワードはその WSDL に最適に設定されます。この値を変更すると、Web クライアントまたは Web サービスは機能しなくなる場合があります。
詳細
このキーワードは、この Web メソッドが使用する XML ネームスペースを指定します。詳細は、"Web サービスおよび Web クライアントの作成" を参照してください。
このキーワードは、メソッドが RPC スタイルのバインディングを使用する場合にのみ有効です。つまり、メソッド (またはそれを含むクラス) は、SoapBindingStyle = rpc とマークする必要があります。(ドキュメント・スタイルのバインディングを使用するメソッドでこのキーワードを指定する場合、WSDL は自己矛盾したものになります。)
既定値
このキーワードを省略すると、メソッドは、Web サービスまたはクライアント・クラスの NAMESPACE パラメータで指定されるネームスペースに配置されます。
WSDL との関係
InterSystems IRIS Web サービスのサービスでは、SoapNameSpace キーワードは <definitions> 要素内のネームスペース宣言に影響します。指定したネームスペース (http://www.customtypes.org など) は、ここに追加されます。以下に例を示します。
...
xmlns:ns2="http://www.customtypes.org"
xmlns:s0="http://www.wsns.org"
...
targetNamespace="http://www.wsns.org"
この例では、http://www.customtypes.org ネームスペースは、接頭語 ns2 に割り当てられます。
WSDL でも、通常どおり、Web サービスのネームスペース (http://www.wsns.org) を宣言します。この例では、このネームスペースは接頭語 s0 に割り当てられ、ターゲットのネームスペースとしても使用されます。
SOAP メッセージへの影響
この SOAP メッセージは以下のようになります (読みやすいように、改行とスペースが追加されています)。
<?xml version="1.0" encoding="UTF-8" ?>
<SOAP-ENV:Envelope xmlns:SOAP-ENV='http://schemas.xmlsoap.org/soap/envelope/'
xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance'
xmlns:s='http://www.w3.org/2001/XMLSchema'
xmlns:SOAP-ENC='http://schemas.xmlsoap.org/soap/encoding/'
xmlns:tns='http://www.customtypes.org' >
<SOAP-ENV:Body SOAP-ENV:encodingStyle='http://schemas.xmlsoap.org/soap/encoding/'>
<tns:AddResponse>
<AddResult>42</AddResult>
</tns:AddResponse>
</SOAP-ENV:Body>
</SOAP-ENV:Envelope>
<AddResponse> 要素は、http://www.webservicetypesns.org ネームスペース内にあります。
一方、SoapNameSpace キーワードを指定しない場合、メッセージは以下のようになります。
<?xml version="1.0" encoding="UTF-8" ?>
<SOAP-ENV:Envelope xmlns:SOAP-ENV='http://schemas.xmlsoap.org/soap/envelope/'
xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance'
xmlns:s='http://www.w3.org/2001/XMLSchema'
xmlns:SOAP-ENC='http://schemas.xmlsoap.org/soap/encoding/'
xmlns:tns='http://www.wsns.org' >
<SOAP-ENV:Body SOAP-ENV:encodingStyle='http://schemas.xmlsoap.org/soap/encoding/'>
<tns:AddResponse>
<AddResult>42</AddResult>
</tns:AddResponse>
</SOAP-ENV:Body>
</SOAP-ENV:Envelope>
この場合、<AddResponse> 要素は Web サービスのネームスペース http://www.wsns.org に含まれます。