1

WSO2ESB で XSLT を介して XML リクエストを SOAP に変換していますが、リクエスト パラメータをレスポンスで使用できるようにすることは可能でしょうか?

例えば

<request>
<test>123</test>
<param1>testing</param1>
</request>

→SOAPに変換

<?xml version='1.0' encoding='utf-8'?><soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"><soapenv:Body><S:Envelope xmlns:S="http://schemas.xmlsoap.org/soap/envelope/">#S:Body><ns2:testrequest xmlns:ns2="http://xml.testing.com/test"><teststring>testing</teststring></ns2:testrequest></S:Body></S:Envelope></soapenv:Body></soapenv:Envelope>

応答では

<?xml version='1.0' encoding='utf-8'?><soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"><soapenv:Body><S:Envelope xmlns:S="http://schemas.xmlsoap.org/soap/envelope/"><S:Body><ns2:testresponse xmlns:ns2="http://xml.testing.com/test"><responsestring>success</responsestring></ns2:testresponse></S:Body></S:Envelope></soapenv:Body></soapenv:Envelope>

XMLで返したい

<responsestring>
<test>123</test>
<return1>success</return1>
</responsestring>

ご覧のとおり、123 はサーバーに送信されておらず、サーバーから受信されていません。ただし、クライアントはこのパラメータを送信しており、リクエストでこのパラメータを使用して応答で送り返したいのですが、これは可能ですか? どうやって?私はシナプスが初めてで、WSO2ESBも初めてです。誰か教えていただけますか?

ありがとう。

4

2 に答える 2

0

今それが機能するようになりました。xsltがテストプロパティから値を取得しようとしているXSLTとともに、プロパティメディエーターをインシーケンスとアウトシーケンスの両方で追加するだけです。それでおしまい!

順番通りに

 <property xmlns:ns="http://org.apache.synapse/xsd" name="TEST" expression="//request/*[local-name()=test]" scope="default"/>

アウトシーケンス

<xslt key="xxxx.xslt">
<property name="test" expression="get-property('TEST')"/>
</xslt>
于 2012-10-31T09:28:49.860 に答える
0

はい、可能です。Insequence でプロパティ mediatorを使用して、必要な値をプロパティとして設定し、enrich mediatorを使用して outsequence に追加して応答することができます。

于 2012-10-31T02:43:03.280 に答える