1.3.3. WSDLサンプル(RPC)

1.3.3.1. 概要

XMLマッピングでWSDL(SOAPBindingはRPC)を利用したサンプルです。
SOAPBinding形式はRPCです。 wsdlファイルは下記の通り:
<?xml version="1.0" encoding="UTF-8"?>
<definitions xmlns:tns="urn:demoServiceSource" xmlns="http://schemas.xmlsoap.org/wsdl/"
xmlns:ns2="http://demo" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" name="Regist" targetNamespace="urn:demoServiceSource">
  <types>
    <schema targetNamespace="http://demo" xmlns:tns="http://demo" xmlns:soap11-enc="http://schemas.xmlsoap.org/soap/encoding/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" xmlns="http://www.w3.org/2001/XMLSchema">
      <element name="Root" type="tns:complexT"/>
      <complexType name="complexT">
        <sequence minOccurs="1" maxOccurs="unbounded">
          <element ref="tns:A"/>
        </sequence>
      </complexType>
      <element name="A" type="string"/>
      <simpleType name="simpleT">
        <restriction base="string">
          <length value="6"/>
        </restriction>
      </simpleType>
    </schema>
  </types>
  <message name="inputMsg">
    <part name="in1" type="ns2:simpleT"/>
    <part name="in2" type="ns2:complexT"/>
  </message>
  <message name="outputMsg">
    <part name="out" type="xsd:string"/>
  </message>
  <portType name="Regist">
    <operation name="Operation">
      <input message="tns:inputMsg"/>
      <output message="tns:outputMsg"/>
    </operation>
  </portType>
  <binding name="RegistBinding" type="tns:Regist">
    <soap:binding style="rpc" transport="http://schemas.xmlsoap.org/soap/http"/>
    <operation name="Operation">
      <soap:operation soapAction=""/>
      <input>
        <soap:body use="literal" namespace="urn:demoServiceSource"/>
      </input>
      <output>
        <soap:body use="literal" namespace="urn:demoServiceSource"/>
      </output>
    </operation>
  </binding>
  <service name="Regist">
    <port name="RegistPort" binding="tns:RegistBinding">
      <soap:address location="http://localhost/Regist"/>
    </port>
  </service>
</definitions>
選択可能なルート要素の形式は以下の通りです。 “Operation{inputMsg}”は指定された場合、inputMsgを対応して、Operationをツリーのルートとし、ツリーを作成します。“OperaionResponse{outputMsg}”はoutputMsgを対応して、OperaionResponseをツリールートとして、ツリーを作成します。{inputMsg}in1、{inputMsg}in2または{outputMsg}outは各messageのpartタグをルートとして、ツリーを作成します。
場合1:
SourceSchemaファイルのルート要素はOperation{inputMsg}です。
Target Schemaファイルのルート要素はOperationResponse{outputMsg}です。
次のように線を結びます。Sourceファイル中のin1要素の値をTargetファイル中のout要素に代入することを表します。


図1.3.3.1-1

生成されたXSLTSource Codeは次の通りです。


図1.3.3.1-2

場合2:
Source Schemaファイルのルート要素は{inputMsg}in2。
Target Schemaファイルのルート要素は{outputMsg}out。
次のように線を結びます。Sourceファイル中のA要素の値をTargetファイル中のout要素に代入することを表します。


図1.3.3.1-3

生成されたXSLTSource Codeは次の通りです。


図1.3.3.1-4


1.3.3.2. 構成

表1.3.3.2-1
Sample_WSDL_RPC プロジェクト名
schema/source.wsdl ソーススキーマファイル
schema/target.wsdl ターゲットスキーマファイル
xsl/wsdl_message.xsl wsdl_message.xmfから生成したXSLファイル
xsl/wsdl_operaion.xsl wsdl_operaion.xmfから生成したXSLファイル
wsdl_message.xmf {inputMsg}in2をソーススキーマのルート要素として、{outputMsg}out}をターゲットスキーマのルート要素として、作成したXMLマッピングファイル
wsdl_operaion.xmf Operation{inputMsg}をソーススキーマのルート要素として、OperationResponse{outputMsg}をターゲットスキーマのルート要素として、作成したXMLマッピングファイル


1.3.3.3. 実行手順

  1. サンプルプロジェクト Sample_WSDL_RPC.zip をインポートします。
  2. ナビゲーターの中から、XMLマッピングファイル(wsdl_message.xmf、wsdl_operaion.xmf)を選択してダブルクリックすると、XMLマッピングエディタが開きます。

1.3.3.4. 注意事項

特になし。