Re: [xsl] Finding and restructuring duplicate elements

Subject: Re: [xsl] Finding and restructuring duplicate elements
From: Daniel Koo <blue.submarine@xxxxxxxxx>
Date: Mon, 13 Dec 2004 21:43:33 +0000
Sorry about the unclear requirement...  

A couple of things to note:
There will only be ONE <AA> with attribute id=1,
There CAN be more than one <AA> with attribute id=xxx
There will ONLY be <AA> elements with two diff. attribute ids, id=1, and id=xxx.
and, id attribute for element <A> is actually ignored.
There can be duplicate <AA> elements (duplicate id attribute) across
different <A> element, but not within same <A> element.

So, worst case scenario for source XML would be:

 <A id=1>
      <AA id=1>data1</AA>
      <AA id=2>text1</AA>
 </A>
 <A id=2>
      <AA id=1>data1</AA>
      <AA id=2>text1</AA>
      <AA id=2>text2</AA>
      <AA id=2>text3</AA>
 </A>

and the desired target:

 <A id=1>
      <AA id=1>data1</AA>
      <AA id=2>text1</AA>
 </A>

 <A id=2>
      <AA id=1>data1</AA>
      <AA id=2>text1</AA>
 </A>

 <A id=2>
      <AA id=1>data1</AA>
      <AA id=2>text2</AA>
 </A>

 <A id=2>
      <AA id=1>data1</AA>
      <AA id=2>text3</AA>
 </A>


I'm thinking of maybe creating a temp variable that will contain the
duplicate nodes within <A> and then recreate the resulting xml tree?

-dK


On Mon, 13 Dec 2004 19:58:57 -0000, Michael Kay <mike@xxxxxxxxxxxx> wrote:
> >
> > I want to transform this XML:
> >
> > <A id=1>
> >     <AA id=1/>
> >     <AA id=2/>
> > </A>
> > <A id=2>
> >     <AA id=1>data1</AA>
> >     <AA id=2>text1</AA>    <<-- These two nodes to be split...
> >     <AA id=2>text2</AA>    <<-- These two nodes to be split...
> > </A>
> >
> > TO:
> >
> > <A id=1>
> >     <AA id=1/>
> >     <AA id=2/>
> > </A>
> > <A id=2>
> >     <AA id=1>data1</AA>
> >     <AA id=2>text1</AA>
> > </A>
> > <A id=2_1>
> >     <AA id=1>data1</AA>
> >     <AA id=2>text2</AA>
> > </A>
> 
> This is a rather unusual variant of the usual grouping problems. But I'm not
> sure the requirements are well specified. How would you want to handle the
> following, for example:
> 
> <A id=2>
>      <AA id=1>data1</AA>
>      <AA id=2>text1</AA>
>      <AA id=2>text2</AA>
>      <AA id=3>textZ</AA>
>      <AA id=3>textX</AA>
>      <AA id=3>textC</AA>
>      <AA id=4>textV</AA>
> </A>
> 
> Michael Kay
> http://www.saxonica.com/
> 
> >
> >
> > Any help/input greatly appreciated!!!
> >
> >
> > Thanks!
> >
> >
> > -daniel K

Current Thread