Subject: Re: XSL/XPath to generate a list of ancestors?
From: "Darcy Parker" <darcyparker@xxxxxxxxx>
Date: Mon, 12 May 2008 12:00:32 -0400
|
Have a look at
http://xsltsl.sourceforge.net/node.html
There is template that generates an XPath for a given node. This is
pretty similar to your desired template.
Darcy
On Mon, May 12, 2008 at 11:51 AM, Nathan Potter
<ndp@xxxxxxxxxxxxxxxxxxxx> wrote:
>
> I need to concatenate the "name" attributes of all of the parents for each
> element. All I could figure out was to use a recursive template. Is there a
> more straightforward way to accomplish this?
>
>
>
> XML:
>
> <Dataset name="root">
> <A name="a1">
> <A name="a2">
> <A name="a3" />
> </A>
> </A>
> <B name="b1">
> <B name="b2"/>
> </B>
> </Dataset>
>
> Desired output:
>
> <fullName>a1</fullName>
> <fullName>a1.a2</fullName>
> <fullName>a1.a2.a3</fullName>
>
> <fullName>b1</fullName>
> <fullName>b1.b2</fullName>
>
>
> XSL:
>
> <xsl:template name="fullName">
> <fullName>
> <xsl:call-template name="fullNameWorker" />
> </fullName >
> </xsl:template>
>
> <xsl:template match="*" name="fullNameWorker" mode="fullName">
> <xsl:if test=".!=/">
> <xsl:apply-templates select=".." mode="fullName"/>
> <xsl:if test="..!=/">.</xsl:if>
> <xsl:value-of select="@name"/>
> </xsl:if>
> </xsl:template>
>
> ============================================================
> Nathan Potter Oregon State University, COAS
> ndp at coas.oregonstate.edu 104 Ocean. Admin. Bldg.
> 541 737 2293 voice Corvallis, OR 97331-5503
> 541 737 2064 fax
|