Oh, I'm sorry that in my previous mail the WSDL piece isn't the
correct one related to the BPEL scripts. The correct one should be:
<element name="BookSearchResponse">
<complexType>
<sequence>
<element maxOccurs="unbounded" minOccurs="0"
name="result">
<complexType>
<sequence>
<element name="title"
type="string"/>
<element name="author"
type="string"/>
<element name="publishDate"
type="string"/>
<element name="amazonRank"
type="string"/>
</sequence>
</complexType>
</element>
</sequence>
</complexType>
</element>
<message name="BookSearchOutput">
<part element="tns:BookSearchResponse" name="body"/>
</message>
Sorry for bothering.
Regards
Wenfeng
------------------
http://www.bupt.edu.cn
On Fri, Apr 17, 2009 at 8:57 AM, Wenfeng ZHAO <[email protected]> wrote:
> Hi Jonathan, I've also used "ode:insert-as-last-into()" in a similar
> case ant it works as good as expected.
> My BPEL script:
> <assign>
> <copy>
> <from>
> <literal>
> <s0_tns:BookSearchResponse />
> </literal>
> </from>
> <to>$output0.body</to>
> </copy>
> </assign>
> <assign>
> <copy>
> <from>
> <literal>
> <s0_tns:result >
> <s0_tns:title >
> </s0_tns:title>
> <s0_tns:author >
> </s0_tns:author>
> <s0_tns:publishDate >
> </s0_tns:publishDate>
> <s0_tns:amazonRank >
> </s0_tns:amazonRank>
> </s0_tns:result>
> </literal>
> </from>
> <to variable='_elem1'/>
> </copy>
> </assign>
>
> <forEach counterName='_i5' parallel='no'>
> <startCounterValue>1</startCounterValue>
> <finalCounterValue>count($_ds1/inner:record)</finalCounterValue>
> <scope>
> <assign>
> <copy>
> <from
> expressionLanguage='urn:oasis:names:tc:wsbpel:2.0:sublang:xpath2.0'>ode:insert-as-last-into($output0.body,
> $_elem1)</from>
> <to>$output0.body</to>
> </copy>
> </assign>
> </scope>
> </forEach>
>
> And the WSDL pieces:
> <element name="searchBookResponse">
> <complexType>
> <sequence>
> <element maxOccurs="unbounded"
> minOccurs="0" name="result">
> <complexType>
> <sequence>
>
> <element name="amazonRank" type="nonNegativeInteger"/>
>
> <element name="price" type="string"/>
>
> <element name="publishDate" type="date"/>
>
> <element name="title" type="string"/>
>
> <element name="publisher" type="string"/>
>
> <element name="detailUrl" type="anyURI"/>
>
> <element name="author" type="string" maxOccurs="unbounded"/>
> </sequence>
> </complexType>
> </element>
> </sequence>
> </complexType>
> </element>
> </schema>
> </types>
>
> <message name="searchBookOutput">
> <part element="tns:searchBookResponse" name="body"/>
> </message>
>
> Hope it useful to you.
>
>
> Regards
> Wenfeng
> -------------------
> http://www.bupt.edu.cn
>
>
> On Fri, Apr 17, 2009 at 3:36 AM, Jonathan Coogan
> <[email protected]> wrote:
>> Hi. I have a question about the "insert-as-first-into" and
>> "insert-as-last-into" Xpath extensions.
>>
>> I get a selectionFailure if I try to insert a child into a parent that
>> does not yet contain other children. I'm wondering if this was done on
>> purpose for some reason, or if this is a bug.
>>
>> As an example, say I have the following elements/types:
>>
>> <element name="RecordSet" type="tns:RecordSetType"/>
>> <complexType name="RecordSetType">
>> <sequence>
>> <element maxOccurs="unbounded" minOccurs="0"
>> ref="tns:Record"/>
>> </sequence>
>> </complexType>
>>
>> <element name="Record" type="tns:RecordType"/>
>> <complexType name="RecordType">
>> <sequence>
>> <element maxOccurs="1" minOccurs="1" name="SomeValue"
>> type="string"/>
>> <element maxOccurs="1" minOccurs="1" name="AnotherValue"
>> type="string"/>
>> </sequence>
>> </complexType>
>>
>> So RecordSet can contain 0 or more Records. If I try to insert a Record
>> into an empty RecordSet (0 Records) I get a selectionFailure. I have to
>> initialize the RecordSet variable with at least one dummy Record before
>> it will work.
>>
>> Comments?
>>
>> Thanks.
>> -Jon
>>
>