Subject: RE: [xsl] Dirty Input From: "Michael Kay" <mike@xxxxxxxxxxxx> Date: Thu, 20 Jul 2006 11:48:45 +0100 |
Easy with 2.0: <xsl:for-each-group select="*" group-starting-with="a"> <devices> <xsl:copy-of select="current-group()"/> </devices> </xsl:for-each-group> Michael Kay http://www.saxonica.com/ > -----Original Message----- > From: Khorasani, Houman [mailto:Houman.Khorasani@xxxxxxxxxxxx] > Sent: 20 July 2006 11:30 > To: xsl-list@xxxxxxxxxxxxxxxxxxxxxx > Subject: [xsl] Dirty Input > > Hello, > > Our system is generating some very dirty XML input. I am not > sure if there would be any solution to this problem at all. > At first it might remind you of my similar request from last > week. But this time the elements are not that conveniently > grouped into one parent tag but are rather loose. > > The tag <Devices> contains elements <a>, <b> and <c> in that > order respectively. The elements <b> and <c> incl. their sub > elements are optional and may be not in the input file. But > <a> is mandatory and would always be in the input file. > > The output shall give the exact structure as the input file > but group <a>, <b> and <c> together and put a <device> tag > between each group. > Since <a> is mandatory we could take it as a base and say the > first <a> is in the first group and the following tags until > the next <a> belong to group 1 as well. The next <a> belongs > to group 2 and any following tags until the next <a> shall be > in group 2 as well, etc. Each group shall be separated by a > <device> tag. Otherwise the same structure of the input file > shall be copied. > > Input file: > > <bla>x</bla> > <bla>x</bla> > <Devices> > <a> > <a2>1</a2> > </a> > <b> > <b2> > <b3>1</b3> > <b4>1</b4> > </b2> > <b2i> > <b3i>1</b3i> > <b4i>1</b4i> > </b2i> > ... > </b> > <c>1</c> > <a> > <a2>1</a2> > </a> > <b> > <b2> > <b3>1</b3> > <b4>1</b4> > </b2> > <b2i> > <b3i>1</b3i> > <b4i>1</b4i> > </b2i> > ... > </b> > <c>1</c> > ... > </Devices> > > Output: > > <bla>x</bla> > <bla>x</bla> > <Devices> > <device> > <a> > <a2>1</a2> > </a> > <b> > <b2> > <b3>1</b3> > <b4>1</b4> > </b2> > <b2i> > <b3i>1</b3i> > <b4i>1</b4i> > </b2i> > ... > </b> > <c>1</c> > </device> > <device> > <a> > <a2>1</a2> > </a> > <b> > <b2> > <b3>1</b3> > <b4>1</b4> > </b2> > <b2i> > <b3i>1</b3i> > <b4i>1</b4i> > </b2i> > ... > </b> > <c>1</c> > </device> > ... > </Devices> > > > Do you guys think this would be possible at all? > > Many Thanks, > Houman
Current Thread |
---|
|
<- Previous | Index | Next -> |
---|---|---|
[xsl] Dirty Input, Khorasani, Houman | Thread | Re: [xsl] Dirty Input, David Carlisle |
[xsl] directory listing extension, andrew welch | Date | RE: [xsl] directory listing extensi, Michael Kay |
Month |