[xquery-talk] next node (sibling)

Jason Hunter jhunter at servlets.com
Fri Aug 1 12:12:37 PDT 2003


I just skimmed your post, but it sounds like you're wanting to get the 
next sibling.  You should read my "X is for XQuery" article.  It's the 
article listed on the front page of x-query.com.  You seem to have a lot 
of questions, and the article will answer many of them including how to 
get a next sibling.  That question was also answered on this list recently.

-jh-

Dmitri.Colebatch at toyota.com.au wrote:

> hey again,
> 
> Apologies for bombarding the list with questions, but you're all being very
> helpful (o:  I've also got past most of the stuff I had to do witht his
> much quicker than I thought I would, thanks to you guys...
> 
> I'm now working with a document with a structure like the following:
> 
> <updates>
>       <item>
>             <item-type>hdr</item-type>
>             <type>update</type>
>             <id>123</id>
>       </item>
>       <item>
>             <item-type>detail</item-type>
>             <detail>
>                   <foo>bar</foo>
>                   <abc>xyz</abc>
>             </detail>
>       </item>
>       <item>
>             <item-type>hdr</item-type>
>             <type>delete</type>
>             <id>456</id>
>       </item>
>       <item>
>             <item-type>hdr</item-type>
>             <type>update</type>
>             <id>789</id>
>       </item>
>       <item>
>             <item-type>detail</item-type>
>             <detail>
>                   <foo>qwerty</foo>
>                   <abc>crazy</abc>
>             </detail>
>       </item>
> </updates>
> 
> as the names suggest, this is for updating data between two systems - I
> need to receive the message from system A and send it to system B in the
> appropriate format.  The structure above is how I receive it from system A.
> 
> Now, its not immediately obvious how the above is intended to work, but
> essentially each "item header record" [item/item-type/text() = 'hdr' ] will
> indicate an update (or new record), or a delete.  In the case of an update,
> I know that the next item record will be an "item detail record"
> [item/item-type/text() = 'detail'] which I use to get the detail of the
> changes.
> 
> The problem of course is that the structure requires a stateful approach to
> the conversion.  What I've tried to do is select all the item header
> records, and look at whether they are an update or a delete.  if they're an
> update, I somehow need to get the next item, which I know will be a "item
> detail record" and get the values out of it as they correspond to this id.
> 
> I'm stuck on trying to get the next sibling.... am I missing something, or
> is this just plain not possible?  Note that I dont have an id element in
> the detail record so I cant go up to the parent and then select the child
> with the same id.
> 
> any (more) help will be much appreciated.
> 
> cheers
> dim
> 
> ps - I want to have the output of the above look something like:
> 
> <updates>
>       <update>
>             <id>123</id>
>             <foo>bar</foo>
>             <abc>xyz</abc>
>       </update>
>       <delete>
>             <id>456</id>
>       </delete>
>       <update>
>             <id>789</id>
>             <foo>qwerty</foo>
>             <abc>crazy</abc>
>       </update>
> </updates>
> 
> which of course would be a more logical structure to start with (o:
> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
>                                DISCLAIMER
> * This email and any attachment may contain confidential information.
>   If you are not the intended recipient you are not authorised to copy
>   or disclose all or any part of it without the prior written consent
>   of Toyota.
> * Opinions expressed in this email and any attachment are those of the
>   sender and not necessarily the opinions of Toyota.
> * Please scan this email and any attachment for viruses.  Toyota does
>   not accept any responsibility for problems caused by viruses, whether
>   it is Toyota's fault or not.
> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
> 
> 
> _______________________________________________
> talk at x-query.com
> http://www.x-query.com/mailman/listinfo/talk
> 



More information about the talk mailing list