RE: [xsl] Creating Hierarchy

Subject: RE: [xsl] Creating Hierarchy
From: "Michael Kay" <mike@xxxxxxxxxxxx>
Date: Sun, 12 Oct 2008 19:44:16 +0100
You'll find a description of an XSLT 2.0 stylesheet that does this (and some
other things besides) at

http://www.idealliance.org/proceedings/xml04/papers/111/mhk-paper.html

Michael Kay
http://www.saxonica.com/ 

> -----Original Message-----
> From: Rowan Sylvester-Bradley [mailto:rowan@xxxxxxxxxxxxxxxxxxxxx] 
> Sent: 12 October 2008 18:44
> To: xsl-list@xxxxxxxxxxxxxxxxxxxxxx
> Subject: [xsl] Creating Hierarchy
> 
> Hi,
> 
> I have an XML file that represents a tree of data elements, 
> similar to a directory tree. The structure of the file has 
> every node in the tree represented by a <node> element, all 
> children of the root, with the hierarchy defined by a <level> 
> element within each node. So the <node> with <level> = 0 is 
> the root of the tree, its children have <level> = 1, their 
> children have <level> = 2 etc. Here's an example:
> 
> <mytree>
>   <node>
>     <name>Root of my tree</name>
>     <level>0</level>
>   </node>
>   <node>
>     <name>Child of root</name>
>     <level>1</level>
>   </node>
>   <node>
>     <name>Another child of root</name>
>     <level>1</level>
>   </node>
>   <node>
>     <name>Grandchild of root</name>
>     <level>2</level>
>   </node>
>   <node>
>     <name>Yet another child of root</name>
>     <level>1</level>
>   </node>
> </mytree>
> 
> I want to transform this into a hierarchical file like this:
> 
> <newnode>
>   <name>Root of my tree</name>
>   <newnode>
>     <name>Child of root</name>
>   </newnode>
>   <newnode>
>     <name>Another child of root</name>
>     <newnode>
>       <name>Grandchild of root</name>
>     </newnode>
>   </newnode>
>   <newnode>
>     <name>Yet another child of root</name>
>   </newnode>
> </newnode>
> 
> How do I write a stylesheet to do this?
> 
> Thanks - Rowan 

Current Thread