Subject: [xsl] SV: xsl-list Digest 14 Aug 2008 05:10:00 -0000 Issue 1588 From: "Kjellaug Johansen" <kjellaug.johansen@xxxxx> Date: Thu, 14 Aug 2008 10:20:33 +0200 |
Thanks, Mukul! It works great! Kjellaug. ------------------------------ Below is the solution for this ... <?xml version="1.0" encoding="utf-8"?> <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="2.0"> <xsl:output method="xml" indent="yes" /> <xsl:template match="test"> <result> <xsl:for-each-group select="*" group-starting-with="Pkt[@type = 'pkt']"> <Pkt> <xsl:for-each select="current-group()"> <A><xsl:value-of select="." /></A> </xsl:for-each> </Pkt> </xsl:for-each-group> </result> </xsl:template> </xsl:stylesheet> On 8/13/08, Kjellaug Johansen <kjellaug.johansen@xxxxx> wrote: > Hi! > > I've got this source-XML: > > <test> > <Pkt type="pkt">Text</Pkt> > <Pkt type="uavs">Text 1</Pkt> > <Pkt type="pkt">More text</Pkt> > <Pkt type="uavs">More text 1</Pkt> > <Pkt type="uavs">More text 2</Pkt> > <Pkt type="pkt">Lot of text</Pkt> > <Pkt type="pkt">Tons of text</Pkt> > <Pkt type="uavs">Tons of text 1</Pkt> > </test> > > When I reach a Pkt-element which does NOT have attribute type='uavs' I should check if the next Pkt-sibling has attribute type='uavs'. > > If so, I want to loop through all the Pkt-elements with attribute type='uavs' that appears right after the current element. > > When a new Pkt-element without the 'uavs' attribute value appears, the loop is fininshed. > > I've tried something like this, but that only lists all the elements with uavs-attribute one time: > > <xsl:if test="following-sibling::Pkt[1][@type='uavs'] "> > <xsl:for-each select="following-sibling::Pkt[@type='uavs'] > [preceding-sibling::*[1][self::Pkt]][generate-id(preceding-sibling::Pkt[ not(preceding-sibling::*[1][self::Pkt])][1]) = generate-id(current())]"> > <A><xsl:value-of select="."/></A> > </xsl:for-each> > </xsl:if> > > My result-XML should look like this: > > <Pkt> > <A>Text</A> > <A>Text 1</A> > </Pkt> > <Pkt> > <A>More text</A> > <A>More text 1</A> > <A>More text 2</A> > </Pkt> > <Pkt> > <A>Lot of text</A> > </Pkt> > <Pkt> > <A>Tons of text</A> > <A>Tons of text 1</A> > </Pkt> > > I use xsl 2.0. > > Thanx!! > > Kjellaug. -- Regards, Mukul Gandhi ------------------------------
Current Thread |
---|
|
<- Previous | Index | Next -> |
---|---|---|
Re: [xsl] efficiently detecting siz, Andrew Welch | Thread | [xsl] RE: loop elements based on a, Kjellaug Johansen |
Re: [xsl] Checking external files b, Colin Paul Adams | Date | Re: [xsl] Cost of complex match pat, Andrew Welch |
Month |