[XSL-LIST Mailing List Archive Home] [By Thread] [By Date] [Recent Entries] [Reply To This Message] loop elements based on attribute
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.
|
PURCHASE STYLUS STUDIO ONLINE TODAY!Purchasing Stylus Studio from our online shop is Easy, Secure and Value Priced! Download The World's Best XML IDE!Accelerate XML development with our award-winning XML IDE - Download a free trial today! Subscribe in XML format
|