Re: [xsl] Children with the same name

Subject: Re: [xsl] Children with the same name
From: Andrew Welch <andrew.j.welch@xxxxxxxxx>
Date: Mon, 21 Nov 2011 16:43:40 +0000
On 21 November 2011 16:34, Merrilees, David
<David.Merrilees@xxxxxxxxxxxx> wrote:
> Hi
>
> I'm stuck with an Xpath. How can I select child nodes with the same name?
The names are arbitrary. So far I have this, which does not work:

> Input
>
> <array>
>  <item/>
>  <nope/>
>  <item>4</item>
>  <item>5</item>
>  <wibble/>
>  <item>six</item>
>  <wibble>stuff</wibble>
>  <item>item</item>
>  <no/>
> </array>
>
> Desired output
>
> <array>
>  <item>4</item>
>  <item>5</item>
>  <wibble/>
>  <item>six</item>
>  <wibble>stuff</wibble>
>  <item>item</item>
> </array>

Hi,

Define a key:

<xsl:key name="elements-by-name" match="*" use="name()"/>

Tweak that match pattern if needed, then you can do:

<xsl:apply-templates select="array/*[exists(key('elements-by-name',
name())[2])]"/>

cheers
andrew

--
Andrew Welch
http://andrewjwelch.com

Current Thread