RE: [xsl] transforming flat data to hierarchical data. Recursion??

Subject: RE: [xsl] transforming flat data to hierarchical data. Recursion??
From: Jarno.Elovirta@xxxxxxxxx
Date: Fri, 6 Jun 2003 11:37:29 +0300
Hi,

> I think I need to use recursion but I cannot get the output I want.
> I tried replacing every /Next/@id with its matching element 
> using a xsl:key 
> on the PAGE elements based on id
> but that only replaces on one level and since I don't know 
> the lenght of the 
> linked lists I cannot use this principle.
> 
> Does anybody have an idea how to solve this
> I'm not really that familiar with xslt

How about

<xsl:key name="id" match="PAGE" use="@id" />
<xsl:key name="idref" match="Next" use="@id" />

<xsl:template match="Pages">
  <xsl:copy>
    <xsl:apply-templates select="PAGE[not(key('idref', @id))]" />
  </xsl:copy>
</xsl:template>

<xsl:template match="Next">
  <xsl:copy>
    <xsl:apply-templates select="key('id', @id)" />
  </xsl:copy>
</xsl:template>

<xsl:template match="@*|node()">
  <xsl:copy>
    <xsl:apply-templates select="@*|node()"/>
  </xsl:copy>
</xsl:template>

Cheers,

Jarno - Dulce Liquido: Pissed Off

 XSL-List info and archive:  http://www.mulberrytech.com/xsl/xsl-list


Current Thread