|
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 |