Subject: Re: 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
|