xsl-list
[Top] [All Lists]

RE: Siblings to child - Hierarchy

2003-08-22 10:50:28
You can process this kind of hierarchy very easily.

Instead of using xsl:apply-templates in the usual way to process the
physical children of a node, use it to select and process the logical
children of the node:

<xsl:apply-templates select="//row[site_parent = current()/site_id]"/>

Then all you need is for the root template to select the logical top of
the hierarchy and do apply-templates on that.

For greater efficiency, use keys.

Michael Kay

-----Original Message-----
From: owner-xsl-list(_at_)lists(_dot_)mulberrytech(_dot_)com 
[mailto:owner-xsl-list(_at_)lists(_dot_)mulberrytech(_dot_)com] On Behalf Of 
Todd Kleine
Sent: 22 August 2003 16:06
To: XSL-List(_at_)lists(_dot_)mulberrytech(_dot_)com
Subject: [xsl] Siblings to child - Hierarchy


Hello,
 
I am new to xsl and am having a tough time with a template to 
transform the results of an oracle "connect by" query into a 
hierarchical xml document.

The xml results of a sample query is below:
 
<page>
  <rowset>
    <row>
      <site_id>1</site_id> 
      <site_name>Test Parent1</site_name> 
      <site_parent>0</site_parent> 
      <level>1</level> 
      <path>/0</path> 
    </row>
    <row>
      <site_id>2</site_id> 
      <site_name>Test Child1 of Test Parent1</site_name> 
      <site_parent>1</site_parent> 
      <level>2</level> 
      <path>/0/1</path> 
    </row>
    <row>
      <site_id>4</site_id> 
      <site_name>Test Child1 of Test Child1</site_name> 
      <site_parent>2</site_parent> 
      <level>3</level> 
      <path>/0/1/2</path> 
    </row>
    <row>
      <site_id>3</site_id> 
      <site_name>Test Parent2</site_name> 
      <site_parent>0</site_parent> 
      <level>1</level> 
      <path>/0</path> 
    </row>
  </rowset>
</page>
 
where the site_parent value is the site_id of it's parent and 
a site_parent of 0 is a top-level node.

I would like to produce a hierarchical xml doc based upon 
these results of the form

<site>
  <site_id>1</site_id>
  <site_name>Test Parent1</site_name>
  <site>
    <site_id>2</site_id>
    <site_name> Test Child1 of Test Parent1</site_name>
    <site>
      <site_id>4</site_id>
      <site_name>Test Child2 of Test Child1</site_name>
    </site>
  </site>
</site>
<site>
  <site_id>3</site>
  <site_name>Test Parent2</site_name>
</site>
          
Has anyone had experience with this type of transform?  Any 
help would be appreciated.

Thanks in advance

todd


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



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



<Prev in Thread] Current Thread [Next in Thread>