Re: [xsl] XSL/XPath to generate a list of ancestors?

Subject: Re: [xsl] 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

Current Thread