[XSL-LIST Mailing List Archive Home] [By Thread] [By Date]

RE: [xsl] converting flat xml data into heirarchy structure


Subject: RE: [xsl] converting flat xml data into heirarchy structure
From: "Andreas L. Delmelle" <a_l.delmelle@xxxxxxxxxx>
Date: Mon, 9 Feb 2004 11:29:16 +0100

> -----Original Message-----
> From: Andreas L. Delmelle
>
<snip />

Oops, forgot a few details:
> <?xml version="1.0" encoding="UTF-8" ?>
>
  <xsl:stylesheet version="1.0"
      xmlns:xsl="http://www.w3.org/1999/XSL/Transform">

> <xsl:template match="scopes">
>   <!-- apply templates on all scope elements
>        with parent_id '0' -->
>   <xsl:apply-templates select="scope[@parent_id='0']" />
> </xsl:template>
>
> <xsl:template match="scope">
>   <!-- create a var to hold the current scope's id -->
>   <xsl:variable name="vId" select="@id" />
>
>   <xsl:copy>
>     <!-- copy attributes -->
>     <xsl:apply-templates select="@*" />
>     <scopes>
>       <!-- now apply templates on all scope elements
>            with parent_id equal to current id -->
>       <xsl:apply-templates select="//scope[@parent_id=$vId]" />
>     </scopes>
> </xsl:template>
>
  </xsl:stylesheet>

On second thought, if the descending scope-elements *always* appear after
their parent, this will be better performance-wise (starting right before
creating the scopes-element in the second template above):

      <xsl:if test="following::scope[@parent_id=$vId]">
        <scopes>
          <xsl:apply-templates select="following::scope[@parent_id=$vId]" />
        </scopes>
      </xsl:if>


Cheers,

Andreas


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



Current Thread