[xsl] Summary/Performance/Add Q: convert flat list w/ level information to a hierarcial one?

Subject: [xsl] Summary/Performance/Add Q: convert flat list w/ level information to a hierarcial one?
From: "Marcus Zelezny" <Marcus.Zelezny@xxxxxx>
Date: Wed, 3 Dec 2003 11:34:08 +0100
Many thanks to Michael, David & Dimitre (in order of answering)!!!

1. My original problem was, to convert
From: (numbering in @name do not determine order, only the node sequence!)
<?xml version="1.0" ?>
<node>
 <node level="0" type="c" name="toplevel"/>
 <node level="1" type="i" name="1. item"/>  
 <node level="1" type="c" name="2. container"/>  
 <node level="2" type="i" name="2.1 item"/>  
 <node level="2" type="i" name="2.2 item"/>  
 <node level="1" type="i" name="3. item"/>
 <node level="1" type="c" name="4. container"/>  
 <node level="2" type="i" name="4.1 item"/>  
 <node level="2" type="c" name="4.2 container"/>  
 <node level="3" type="i" name="4.2.1 item"/> 
</node>

To:
<?xml version="1.0" encoding="utf-8"?>
<node>
 <node level="0" type="c" name="toplevel">
  <node level="1" type="i" name="1. item"/>
  <node level="1" type="c" name="2. container">
   <node level="2" type="i" name="2.1 item"/>
   <node level="2" type="i" name="2.2 item"/>
  </node>
  <node level="1" type="i" name="3. item"/>
  <node level="1" type="c" name="4. container">
   <node level="2" type="i" name="4.1 item"/>
   <node level="2" type="c" name="4.2 container">
    <node level="3" type="i" name="4.2.1 item"/>
   </node>
  </node>
 </node>
</node>

2. what I learned - surprisingly for me - there is not need for item/container tags!?

3. regarding performance

The typical number of <node>'s ranges btw 100-3000, w/ max. level btw. 3-7

4. additional question:

Can your tricky algorithms also deal with my real situation:
From:
<items>
 <item type="c" name="toplevel"><level>0</level></item>
 <item type="i" name="1. item"><level>1</level></item>
 <item type="c" name="2. container"><level>1</level></item>
 <item type="i" name="2.1 item"><level>2</level></item>
 <item type="i" name="2.2 item"><level>2</level></item>
 <item type="i" name="3. item"><level>1</level></item>
 <item type="c" name="4. container"><level>1</level></item>
 <item type="i" name="4.1 item"><level>2</level></item>
 <item type="c" name="4.2 container"><level>2</level></item>
 <item type="i" name="4.2.1 item"><level>3</level></item>
</items>
To:
Same output desired

Once again, many thanks for your contributions (personally, I::[learned]->alot)

Thanks in advance
	    Marcus


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


Current Thread