[XSL-LIST Mailing List Archive Home] [By Thread] [By Date]

Re: [xsl] How to merge XML node including all the corresponding children with unique element and latest value?


Subject: Re: [xsl] How to merge XML node including all the corresponding children with unique element and latest value?
From: Michel Hendriksen <michel.hendriksen@xxxxx>
Date: Tue, 17 Jul 2012 09:42:45 +0200

Can;'t you try first?

On Mon, Jul 16, 2012 at 6:54 PM, Lucent Lau <lucent.lau@xxxxxxxxx> wrote:
> I have this XSL:
> <root>
>     <library id="L1">
>         <floor1 id="1">
>             <shelf id="1">
>                 <book id="1" action="borrow">
>                     <attributes>
>                         <user>John</user>
>                     </attributes>
>                     <other1>y</other1>
>                 </book>
>                 <book id="1" action="extend">
>                     <attributes>
>                         <user>Woo</user>
>                         <length>3</length>
>                     </attributes>
>                     <other2>y</other2>
>                 </book>
>                 <book id="2" action="extend">
>                     <attributes>
>                         <length>2</length>
>                         <condition>ok</condition>
>                     </attributes>
>                     <other3>y</other3>
>                 </book>
>             </shelf>
>             <shelf id="2">
>         </floor1>
>         <floor1 id="2">..</floor1>
>     </library>
> </root>
>
> Output:
> <root>
>     <library id="L1">
>         <floor1 id="1">
>             <shelf id="1">
>                 <book id="1" action="borrow">
>                     <attributes>
>                         <user>Woo</user>
>                         <length>3</length>
>                     </attributes>
>                     <other1>y</other1>
>                     <other2>y</other2>
>                 </book>
>
>                 <book id="2" action="extend">
>                     <attributes>
>                         <length>2</length>
>                         <condition>ok</condition>
>                     </attributes>
>                     <other3>y</other3>
>                 </book>
>             </shelf>
>             <shelf id="2">
>         </floor1>
>         <floor1 id="2">..</floor1>
>     </library>
> </root>
>
> I need to combine the node such that For every node that has the same
> id with action=borrow followed by one or more node with action=extend
>
>     Merge it together to the node with action=borrow.
>     Merge the attributes children together such that it will have all
> the unique attributes from the siblings with the latest value.
>     leave other children unchanged
>
> Please let me know how to fix this transformation using XSLT 2.0 ?
>
> Thanks very much.
> LL


Current Thread
Keywords