xsl-list
[Top] [All Lists]

Converting Flat XML to Hierarchical structure using xsl.

2005-11-13 23:11:16
Hello,

I want to convert the some Flat XML content to
hierachical structure.. 

I have the following xml file:
<?xml version="1.0" encoding="UTF-8"?>
<office>
  <ordered-list style-name="L1">
     <list-item>
         <h style-name="P1" level="1">Application</h>
      </list-item>
  </ordered-list>
  <ordered-list style-name="L2">
    <list-item>
      <ordered-list>
        <list-item>
          <h style-name="P3" level="2">Processgroup</h>
        </list-item>
      </ordered-list>
    </list-item>
  </ordered-list>
  <ordered-list style-name="L3">
    <list-item>
      <ordered-list>
        <list-item>
          <ordered-list>
            <list-item>
               <h style-name="P4" level="3">Process</h>
            </list-item>
           </ordered-list>
        </list-item>
      </ordered-list>
     </list-item>
  </ordered-list>
  <ordered-list style-name="L3"
continue-numbering="true">
    <list-item>
        <ordered-list continue-numbering="true">
          <list-item>
            <ordered-list continue-numbering="true">
              <list-item>
                <ordered-list continue-numbering="true">
                  <list-item>
                    <h style-name="P5" level="4">PanelName</h>
                   </list-item>
                 </ordered-list>
                </list-item>
               </ordered-list>
              </list-item>
            </ordered-list>
        </list-item>
  </ordered-list>
</office>

My expected output structure is
---------------------------------
<layout>
 <Application>
   <Processgroup>
     <Process>
       <PanelName>
       </PanelName>
     </Process>
   </Processgroup>
 </Application>
</layout>

I am using the following XSL to get the above output:

<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform";>
<xsl:output method="xml"/>
<xsl:template match="office">
<layout>
    <xsl:apply-templates
select="ordered-list/list-item/"/>
</layout>                               
</xsl:template>

<xsl:template match="ordered-list/list-item/">
        <xsl:if test="h">
        <xsl:element name="h">
        <xsl:apply-templates
select="ordered-list/list-item"/>
        </xsl:element>
        </xsl:if>
</xsl:template>
</xsl:stylesheet>

It gives the following output:
<?xml version="1.0" encoding="UTF-8"?>
<layout>
 Application
   Processgroup
    Process
     PanelName
</layout>

How to solve this.. any help?

Thanks
Regards,
Raj


                
__________________________________ 
Start your day with Yahoo! - Make it your home page! 
http://www.yahoo.com/r/hs

--~------------------------------------------------------------------
XSL-List info and archive:  http://www.mulberrytech.com/xsl/xsl-list
To unsubscribe, go to: http://lists.mulberrytech.com/xsl-list/
or e-mail: <mailto:xsl-list-unsubscribe(_at_)lists(_dot_)mulberrytech(_dot_)com>
--~--