Subject: Re: How to move sibling 1 to child, sibling 2 to grandchild...
From: Andrew Welch <andrew.j.welch@xxxxxxxxx>
Date: Mon, 15 Aug 2011 21:03:58 +0100
|
On 15 August 2011 21:00, Alex Muir <alex.g.muir@xxxxxxxxx> wrote:
> Hi given the following
>
> <group xml:id="MILHIS_Yes">
> <name>Yes</name>
> </group>
> <group xml:id="MILHIS_Vehicles">
> <name>Vehicles</name>
> </group>
> <group xml:id="MILHIS_Air">
> <name>Air</name>
> </group>
> <group xml:id="MILHIS_Aeroplane">
> <name>Aeroplane</name>
> </group>
> <item xml:id="MILHIS_Attack_Aircraft">
> <name>Attack Aircraft</name>
> </item>
>
> I'm trying to convert it to without any success.
>
> <group xml:id="MILHIS_Yes">
> <name>Yes</name><group xml:id="MILHIS_Vehicles">
> <name>Vehicles</name>
> <group xml:id="MILHIS_Air">
> <name>Air</name>
> <group xml:id="MILHIS_Aeroplane">
> <name>Aeroplane</name>
> <item xml:id="MILHIS_Attack_Aircraft">
> <name>Attack Aircraft</name>
> </item>
> </group>
> </group>
> </group>
> </group>
>
> How do you do this in xslt assuming you could have any number of
> groups followed by 1 item?
<xsl:template match="/">
<xsl:apply-templates select="/path/to/group[1]"/>
</
then within the group template, apply-templates to the next sibling, or item:
<xsl:template match="group">
<xsl:copy>
<xsl:copy-of select="node()"/>
<xsl:apply-templates select="following-sibling::*[1][self::group
or self:item]"/>
</
</
--
Andrew Welch
http://andrewjwelch.com
|