Subject: [xsl] loop elements based on attribute From: "Kjellaug Johansen" <kjellaug.johansen@xxxxx> Date: Wed, 13 Aug 2008 09:18:20 +0200 |
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(p receding-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.
Current Thread |
---|
|
<- Previous | Index | Next -> |
---|---|---|
RE: [xsl] DTD number of occurances, XSL-List Owner | Thread | [xsl] without a loop file get the e, henry human |
[xsl] DTD number of occurances, Sathasivam, Elayaraj | Date | RE: [xsl] define a global variable , W Charlton |
Month |