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 10:58:28 +0100
> -----Original Message-----
> From: David Buddrige
>

Hi David,

> I have a source document that is currently being
> generated from an Oracle database - it is effectively
> a table dump in xml format of the "scope" table..  It
> has the following structure.
>
<snip />

I think, the best way to go about this is something like:

<?xml version="1.0" encoding="UTF-8" ?>

<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>

Caution: this solution would create empty 'scopes' elements when there are
no 'scope' elements that satisfy the condition '@parent_id=$vId'. You could
test for this with an xsl:if first.


Hope this helps!

Cheers,

Andreas


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


Current Thread