Xpath 使用WSO2 ESB组合两个查询

Xpath 使用WSO2 ESB组合两个查询,xpath,wso2,wso2esb,synapse,Xpath,Wso2,Wso2esb,Synapse,我一直在试图弄清楚如何让WSO2的ESB调用两个不同的API,并将它们的结果合并到一个响应中,结果只会遇到麻烦。最基本的是,我有两个后端,我请求它们响应如下内容: <items> <item> <id>1</id> <name>Item 1</name> <parts> <part> <

我一直在试图弄清楚如何让WSO2的ESB调用两个不同的API,并将它们的结果合并到一个响应中,结果只会遇到麻烦。最基本的是,我有两个后端,我请求它们响应如下内容:

<items>
    <item>
        <id>1</id>
        <name>Item 1</name>
        <parts>
            <part>
                <id>1</id>
                <name>Part 1.1</name>
            </part>
            <part>
                <id>1</id>
                <name>Part 1.2</name>
            </part>
            <part>
                <id>1</id>
                <name>Part 1.3</name>
            </part>
        </parts>
    </item>
    <item>
        <id>2</id>
        <name>Item 2</name>
        <parts>
            <part>
                <id>2</id>
                <name>Part 2.1</name>
            </part>
            <part>
                <id>2</id>
                <name>Part 2.2</name>
            </part>
        </parts>
    </item>
</items>

<?xml version="1.0" encoding="UTF-8"?>
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
    <soapenv:Body>
        <response xmlns="http://example.com/response">
            <query name="items" xmlns="http://example.com/query">
                <row>
                    <id>1</id>
                    <name>Item 1</name>
                </row>
                <row>
                    <id>2</id>
                    <name>Item 2</name>
                </row>
            </query>
        </response>
    </soapenv:Body>
</soapenv:Envelope>
<?xml version="1.0" encoding="UTF-8"?>
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
    <soapenv:Body>
        <response xmlns="http://example.com/response">
            <query name="parts" xmlns="http://example.com/query">
                <row>
                    <id>1</id>
                    <part>Part 1.1</part>
                </row>
                <row>
                    <id>1</id>
                    <part>Part 1.2</part>
                </row>
                <row>
                    <id>1</id>
                    <part>Part 1.3</part>
                </row>
                <row>
                    <id>2</id>
                    <part>Part 2.1</part>
                </row>
                <row>
                    <id>2</id>
                    <part>Part 2.2</part>
                </row>
            </query>
        </response>
    </soapenv:Body>
</soapenv:Envelope>
这里的插入顺序大大简化了,但它确实发送了两个有效的查询并返回了预期的响应。这里所写的outSequence从不向客户机发送响应或在服务器上记录错误。如果我从
aggregate
中删除
correlateOn
元素,我会从两个API调用中的一个调用中返回一个
。我想,
correlateOn
是我想在这里使用的东西,但是我在WSO2或Apache上都找不到任何有用的文档,所以我肯定我使用的不正确。我的XPath背景相当薄弱,所以我相信该表达式也需要一些工作


我是否至少在克隆/聚合模式方面走对了轨道?我将如何将这两个查询的结果组合成类似于我的示例的内容?如果我能完成一些事情,那么我应该能够用XSLT完成其余的工作。

看一下这个演示:

带有项目响应的后端1:

<?xml version="1.0" encoding="UTF-8"?>
<proxy xmlns="http://ws.apache.org/ns/synapse"
       name="items"
       transports="https http"
       startOnLoad="true">
   <target>
      <inSequence>
         <payloadFactory media-type="xml">
            <format>
               <soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"
                                 xmlns:xsd="http://www.w3.org/2001/XMLSchema"
                                 xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/"
                                 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
                  <soapenv:Body>
                     <response xmlns="http://example.com/response">
                        <query xmlns="http://example.com/query" name="items">
                           <row>
                              <id>1</id>
                              <name>Item 1</name>
                           </row>
                           <row>
                              <id>2</id>
                              <name>Item 2</name>
                           </row>
                        </query>
                     </response>
                  </soapenv:Body>
               </soapenv:Envelope>
            </format>
            <args/>
         </payloadFactory>
         <log level="full"/>
         <loopback/>
      </inSequence>
      <outSequence>
         <send/>
      </outSequence>
      <faultSequence/>
   </target>
</proxy>
<?xml version="1.0" encoding="UTF-8"?>
<proxy xmlns="http://ws.apache.org/ns/synapse"
       name="parts"
       transports="https http"
       startOnLoad="true">
   <target>
      <inSequence>
         <payloadFactory media-type="xml">
            <format>
               <soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"
                                 xmlns:xsd="http://www.w3.org/2001/XMLSchema"
                                 xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/"
                                 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
                  <soapenv:Body>
                     <response xmlns="http://example.com/response">
                        <query xmlns="http://example.com/query" name="parts">
                           <row>
                              <id>1</id>
                              <part>Part 1.1</part>
                           </row>
                           <row>
                              <id>1</id>
                              <part>Part 1.2</part>
                           </row>
                           <row>
                              <id>1</id>
                              <part>Part 1.3</part>
                           </row>
                           <row>
                              <id>2</id>
                              <part>Part 2.1</part>
                           </row>
                           <row>
                              <id>2</id>
                              <part>Part 2.2</part>
                           </row>
                        </query>
                     </response>
                  </soapenv:Body>
               </soapenv:Envelope>
            </format>
            <args/>
         </payloadFactory>
         <log level="full"/>
         <loopback/>
      </inSequence>
      <outSequence>
         <send/>
      </outSequence>
      <faultSequence/>
   </target>
</proxy>
<items xmlns="http://ws.apache.org/ns/synapse" xmlns:syn="http://ws.apache.org/ns/synapse" xmlns:saxon="http://saxon.sf.net/" xmlns:exslt="http://exslt.org/common">
   <item>
      <id>1</id>
      <name>Item 1</name>
      <parts>
         <part>
            <id>1</id>
            <name>Part 1.1</name>
         </part>
         <part>
            <id>1</id>
            <name>Part 1.2</name>
         </part>
         <part>
            <id>1</id>
            <name>Part 1.3</name>
         </part>
      </parts>
   </item>
   <item>
      <id>2</id>
      <name>Item 2</name>
      <parts>
         <part>
            <id>2</id>
            <name>Part 2.1</name>
         </part>
         <part>
            <id>2</id>
            <name>Part 2.2</name>
         </part>
      </parts>
   </item>
</items>

1.
项目1
2.
项目2
具有部件响应的后端2:

<?xml version="1.0" encoding="UTF-8"?>
<proxy xmlns="http://ws.apache.org/ns/synapse"
       name="items"
       transports="https http"
       startOnLoad="true">
   <target>
      <inSequence>
         <payloadFactory media-type="xml">
            <format>
               <soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"
                                 xmlns:xsd="http://www.w3.org/2001/XMLSchema"
                                 xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/"
                                 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
                  <soapenv:Body>
                     <response xmlns="http://example.com/response">
                        <query xmlns="http://example.com/query" name="items">
                           <row>
                              <id>1</id>
                              <name>Item 1</name>
                           </row>
                           <row>
                              <id>2</id>
                              <name>Item 2</name>
                           </row>
                        </query>
                     </response>
                  </soapenv:Body>
               </soapenv:Envelope>
            </format>
            <args/>
         </payloadFactory>
         <log level="full"/>
         <loopback/>
      </inSequence>
      <outSequence>
         <send/>
      </outSequence>
      <faultSequence/>
   </target>
</proxy>
<?xml version="1.0" encoding="UTF-8"?>
<proxy xmlns="http://ws.apache.org/ns/synapse"
       name="parts"
       transports="https http"
       startOnLoad="true">
   <target>
      <inSequence>
         <payloadFactory media-type="xml">
            <format>
               <soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"
                                 xmlns:xsd="http://www.w3.org/2001/XMLSchema"
                                 xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/"
                                 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
                  <soapenv:Body>
                     <response xmlns="http://example.com/response">
                        <query xmlns="http://example.com/query" name="parts">
                           <row>
                              <id>1</id>
                              <part>Part 1.1</part>
                           </row>
                           <row>
                              <id>1</id>
                              <part>Part 1.2</part>
                           </row>
                           <row>
                              <id>1</id>
                              <part>Part 1.3</part>
                           </row>
                           <row>
                              <id>2</id>
                              <part>Part 2.1</part>
                           </row>
                           <row>
                              <id>2</id>
                              <part>Part 2.2</part>
                           </row>
                        </query>
                     </response>
                  </soapenv:Body>
               </soapenv:Envelope>
            </format>
            <args/>
         </payloadFactory>
         <log level="full"/>
         <loopback/>
      </inSequence>
      <outSequence>
         <send/>
      </outSequence>
      <faultSequence/>
   </target>
</proxy>
<items xmlns="http://ws.apache.org/ns/synapse" xmlns:syn="http://ws.apache.org/ns/synapse" xmlns:saxon="http://saxon.sf.net/" xmlns:exslt="http://exslt.org/common">
   <item>
      <id>1</id>
      <name>Item 1</name>
      <parts>
         <part>
            <id>1</id>
            <name>Part 1.1</name>
         </part>
         <part>
            <id>1</id>
            <name>Part 1.2</name>
         </part>
         <part>
            <id>1</id>
            <name>Part 1.3</name>
         </part>
      </parts>
   </item>
   <item>
      <id>2</id>
      <name>Item 2</name>
      <parts>
         <part>
            <id>2</id>
            <name>Part 2.1</name>
         </part>
         <part>
            <id>2</id>
            <name>Part 2.2</name>
         </part>
      </parts>
   </item>
</items>

1.
第1.1部分
1.
第1.2部分
1.
第1.3部分
2.
第2.1部分
2.
第2.2部分
我的API调用后端1和后端2并使用xslt转换:

<?xml version="1.0" encoding="UTF-8"?>
<api xmlns="http://ws.apache.org/ns/synapse"
     name="ItemList"
     context="/item_list">
   <resource methods="POST" uri-template="/">
      <inSequence>
         <header name="Action" scope="default" value="urn:mediate"/>
         <call>
            <endpoint>
               <address uri="http://localhost:8283/services/items.itemsHttpSoap11Endpoint"
                        format="soap11"/>
            </endpoint>
         </call>
         <enrich>
            <source type="inline" clone="true">
               <Payloads/>
            </source>
            <target type="property" property="Items"/>
         </enrich>
         <enrich>
            <source clone="true" xpath="$body/*"/>
            <target action="child" xpath="$ctx:Items"/>
         </enrich>
         <payloadFactory media-type="xml">
            <format>
               <soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"
                                 xmlns:xsd="http://www.w3.org/2001/XMLSchema"
                                 xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/"
                                 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
                  <soapenv:Body/>
               </soapenv:Envelope>
            </format>
            <args/>
         </payloadFactory>
         <call>
            <endpoint>
               <address uri="http://localhost:8283/services/parts.partsHttpSoap11Endpoint"
                        format="soap11"/>
            </endpoint>
         </call>
         <enrich>
            <source clone="true" xpath="$body/*[name()='response']/*[name()='query']"/>
            <target type="property" property="Parts"/>
         </enrich>
         <enrich>
            <source type="property" clone="true" property="Parts"/>
            <target action="child" xpath="$ctx:Items"/>
         </enrich>
         <enrich>
            <source type="property" property="Items"/>
            <target type="body"/>
         </enrich>   
         <xslt key="transformTwoSourcesToOneResult"/>            
         <loopback/>
      </inSequence>
      <outSequence>
         <send/>
      </outSequence>
      <faultSequence/>
   </resource>
</api>

以及我的xslt转换:

<?xml version="1.0" encoding="UTF-8"?>
<localEntry key="transformTwoSourcesToOneResult" xmlns="http://ws.apache.org/ns/synapse">
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" 
                              xmlns:ns0="http://example.com/query" 
                              xmlns:ns1="http://example.com/response" 
                              xmlns:xs="http://www.w3.org/2001/XMLSchema" 
                              xmlns:exslt="http://exslt.org/common"
                              xmlns:saxon="http://saxon.sf.net/"
                              xmlns:syn="http://ws.apache.org/ns/synapse"
                              exclude-result-prefixes="ns0 ns1 xs">
    <xsl:output method="xml" encoding="UTF-8" indent="yes"/>
    <xsl:template match="/">
    <xsl:variable name="var1_instance_Payloads" select="."/>
        <items>
            <xsl:for-each select="$var1_instance_Payloads/syn:Payloads">
                <xsl:variable name="var2_Payloads" select="."/> 
            <xsl:for-each select="$var2_Payloads/ns1:response/ns0:query/ns0:row">
                <xsl:variable name="var2_row" select="."/>
                <item>
                    <id>
                        <xsl:value-of select="number(string($var2_row/ns0:id))"/>
                    </id>
                    <name>
                        <xsl:value-of select="string($var2_row/ns0:name)"/>
                    </name>
                    <parts>
                        <xsl:for-each select="$var2_Payloads/ns0:query/ns0:row">
                            <xsl:variable name="var4_row" select="."/>
                            <xsl:if test="string((number(string($var2_row/ns0:id)) = number(string($var4_row/ns0:id)))) != 'false'">
                                <part>
                                    <id>
                                        <xsl:value-of select="number(string($var4_row/ns0:id))"/>
                                    </id>
                                    <name>
                                        <xsl:value-of select="string($var4_row/ns0:part)"/>
                                    </name>
                                </part>
                            </xsl:if>
                        </xsl:for-each>
                    </parts>
                </item>
            </xsl:for-each>
            </xsl:for-each>
        </items>
    </xsl:template>
</xsl:stylesheet>

</localEntry>

API响应:

<?xml version="1.0" encoding="UTF-8"?>
<proxy xmlns="http://ws.apache.org/ns/synapse"
       name="items"
       transports="https http"
       startOnLoad="true">
   <target>
      <inSequence>
         <payloadFactory media-type="xml">
            <format>
               <soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"
                                 xmlns:xsd="http://www.w3.org/2001/XMLSchema"
                                 xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/"
                                 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
                  <soapenv:Body>
                     <response xmlns="http://example.com/response">
                        <query xmlns="http://example.com/query" name="items">
                           <row>
                              <id>1</id>
                              <name>Item 1</name>
                           </row>
                           <row>
                              <id>2</id>
                              <name>Item 2</name>
                           </row>
                        </query>
                     </response>
                  </soapenv:Body>
               </soapenv:Envelope>
            </format>
            <args/>
         </payloadFactory>
         <log level="full"/>
         <loopback/>
      </inSequence>
      <outSequence>
         <send/>
      </outSequence>
      <faultSequence/>
   </target>
</proxy>
<?xml version="1.0" encoding="UTF-8"?>
<proxy xmlns="http://ws.apache.org/ns/synapse"
       name="parts"
       transports="https http"
       startOnLoad="true">
   <target>
      <inSequence>
         <payloadFactory media-type="xml">
            <format>
               <soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"
                                 xmlns:xsd="http://www.w3.org/2001/XMLSchema"
                                 xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/"
                                 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
                  <soapenv:Body>
                     <response xmlns="http://example.com/response">
                        <query xmlns="http://example.com/query" name="parts">
                           <row>
                              <id>1</id>
                              <part>Part 1.1</part>
                           </row>
                           <row>
                              <id>1</id>
                              <part>Part 1.2</part>
                           </row>
                           <row>
                              <id>1</id>
                              <part>Part 1.3</part>
                           </row>
                           <row>
                              <id>2</id>
                              <part>Part 2.1</part>
                           </row>
                           <row>
                              <id>2</id>
                              <part>Part 2.2</part>
                           </row>
                        </query>
                     </response>
                  </soapenv:Body>
               </soapenv:Envelope>
            </format>
            <args/>
         </payloadFactory>
         <log level="full"/>
         <loopback/>
      </inSequence>
      <outSequence>
         <send/>
      </outSequence>
      <faultSequence/>
   </target>
</proxy>
<items xmlns="http://ws.apache.org/ns/synapse" xmlns:syn="http://ws.apache.org/ns/synapse" xmlns:saxon="http://saxon.sf.net/" xmlns:exslt="http://exslt.org/common">
   <item>
      <id>1</id>
      <name>Item 1</name>
      <parts>
         <part>
            <id>1</id>
            <name>Part 1.1</name>
         </part>
         <part>
            <id>1</id>
            <name>Part 1.2</name>
         </part>
         <part>
            <id>1</id>
            <name>Part 1.3</name>
         </part>
      </parts>
   </item>
   <item>
      <id>2</id>
      <name>Item 2</name>
      <parts>
         <part>
            <id>2</id>
            <name>Part 2.1</name>
         </part>
         <part>
            <id>2</id>
            <name>Part 2.2</name>
         </part>
      </parts>
   </item>
</items>

1.
项目1
1.
第1.1部分
1.
第1.2部分
1.
第1.3部分
2.
项目2
2.
第2.1部分
2.
第2.2部分

看看这个演示:

带有项目响应的后端1:

<?xml version="1.0" encoding="UTF-8"?>
<proxy xmlns="http://ws.apache.org/ns/synapse"
       name="items"
       transports="https http"
       startOnLoad="true">
   <target>
      <inSequence>
         <payloadFactory media-type="xml">
            <format>
               <soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"
                                 xmlns:xsd="http://www.w3.org/2001/XMLSchema"
                                 xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/"
                                 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
                  <soapenv:Body>
                     <response xmlns="http://example.com/response">
                        <query xmlns="http://example.com/query" name="items">
                           <row>
                              <id>1</id>
                              <name>Item 1</name>
                           </row>
                           <row>
                              <id>2</id>
                              <name>Item 2</name>
                           </row>
                        </query>
                     </response>
                  </soapenv:Body>
               </soapenv:Envelope>
            </format>
            <args/>
         </payloadFactory>
         <log level="full"/>
         <loopback/>
      </inSequence>
      <outSequence>
         <send/>
      </outSequence>
      <faultSequence/>
   </target>
</proxy>
<?xml version="1.0" encoding="UTF-8"?>
<proxy xmlns="http://ws.apache.org/ns/synapse"
       name="parts"
       transports="https http"
       startOnLoad="true">
   <target>
      <inSequence>
         <payloadFactory media-type="xml">
            <format>
               <soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"
                                 xmlns:xsd="http://www.w3.org/2001/XMLSchema"
                                 xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/"
                                 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
                  <soapenv:Body>
                     <response xmlns="http://example.com/response">
                        <query xmlns="http://example.com/query" name="parts">
                           <row>
                              <id>1</id>
                              <part>Part 1.1</part>
                           </row>
                           <row>
                              <id>1</id>
                              <part>Part 1.2</part>
                           </row>
                           <row>
                              <id>1</id>
                              <part>Part 1.3</part>
                           </row>
                           <row>
                              <id>2</id>
                              <part>Part 2.1</part>
                           </row>
                           <row>
                              <id>2</id>
                              <part>Part 2.2</part>
                           </row>
                        </query>
                     </response>
                  </soapenv:Body>
               </soapenv:Envelope>
            </format>
            <args/>
         </payloadFactory>
         <log level="full"/>
         <loopback/>
      </inSequence>
      <outSequence>
         <send/>
      </outSequence>
      <faultSequence/>
   </target>
</proxy>
<items xmlns="http://ws.apache.org/ns/synapse" xmlns:syn="http://ws.apache.org/ns/synapse" xmlns:saxon="http://saxon.sf.net/" xmlns:exslt="http://exslt.org/common">
   <item>
      <id>1</id>
      <name>Item 1</name>
      <parts>
         <part>
            <id>1</id>
            <name>Part 1.1</name>
         </part>
         <part>
            <id>1</id>
            <name>Part 1.2</name>
         </part>
         <part>
            <id>1</id>
            <name>Part 1.3</name>
         </part>
      </parts>
   </item>
   <item>
      <id>2</id>
      <name>Item 2</name>
      <parts>
         <part>
            <id>2</id>
            <name>Part 2.1</name>
         </part>
         <part>
            <id>2</id>
            <name>Part 2.2</name>
         </part>
      </parts>
   </item>
</items>

1.
项目1
2.
项目2
具有部件响应的后端2:

<?xml version="1.0" encoding="UTF-8"?>
<proxy xmlns="http://ws.apache.org/ns/synapse"
       name="items"
       transports="https http"
       startOnLoad="true">
   <target>
      <inSequence>
         <payloadFactory media-type="xml">
            <format>
               <soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"
                                 xmlns:xsd="http://www.w3.org/2001/XMLSchema"
                                 xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/"
                                 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
                  <soapenv:Body>
                     <response xmlns="http://example.com/response">
                        <query xmlns="http://example.com/query" name="items">
                           <row>
                              <id>1</id>
                              <name>Item 1</name>
                           </row>
                           <row>
                              <id>2</id>
                              <name>Item 2</name>
                           </row>
                        </query>
                     </response>
                  </soapenv:Body>
               </soapenv:Envelope>
            </format>
            <args/>
         </payloadFactory>
         <log level="full"/>
         <loopback/>
      </inSequence>
      <outSequence>
         <send/>
      </outSequence>
      <faultSequence/>
   </target>
</proxy>
<?xml version="1.0" encoding="UTF-8"?>
<proxy xmlns="http://ws.apache.org/ns/synapse"
       name="parts"
       transports="https http"
       startOnLoad="true">
   <target>
      <inSequence>
         <payloadFactory media-type="xml">
            <format>
               <soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"
                                 xmlns:xsd="http://www.w3.org/2001/XMLSchema"
                                 xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/"
                                 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
                  <soapenv:Body>
                     <response xmlns="http://example.com/response">
                        <query xmlns="http://example.com/query" name="parts">
                           <row>
                              <id>1</id>
                              <part>Part 1.1</part>
                           </row>
                           <row>
                              <id>1</id>
                              <part>Part 1.2</part>
                           </row>
                           <row>
                              <id>1</id>
                              <part>Part 1.3</part>
                           </row>
                           <row>
                              <id>2</id>
                              <part>Part 2.1</part>
                           </row>
                           <row>
                              <id>2</id>
                              <part>Part 2.2</part>
                           </row>
                        </query>
                     </response>
                  </soapenv:Body>
               </soapenv:Envelope>
            </format>
            <args/>
         </payloadFactory>
         <log level="full"/>
         <loopback/>
      </inSequence>
      <outSequence>
         <send/>
      </outSequence>
      <faultSequence/>
   </target>
</proxy>
<items xmlns="http://ws.apache.org/ns/synapse" xmlns:syn="http://ws.apache.org/ns/synapse" xmlns:saxon="http://saxon.sf.net/" xmlns:exslt="http://exslt.org/common">
   <item>
      <id>1</id>
      <name>Item 1</name>
      <parts>
         <part>
            <id>1</id>
            <name>Part 1.1</name>
         </part>
         <part>
            <id>1</id>
            <name>Part 1.2</name>
         </part>
         <part>
            <id>1</id>
            <name>Part 1.3</name>
         </part>
      </parts>
   </item>
   <item>
      <id>2</id>
      <name>Item 2</name>
      <parts>
         <part>
            <id>2</id>
            <name>Part 2.1</name>
         </part>
         <part>
            <id>2</id>
            <name>Part 2.2</name>
         </part>
      </parts>
   </item>
</items>

1.
第1.1部分
1.
第1.2部分
1.
第1.3部分