xml - Xslt group parent/child -


i have trouble getting following result xml/xslt transformation:

<root>   <node>        <id>1</id>     <parentid></parentid>     <name>file 1</name>   <node>   <node>        <id>2</id>     <parentid></parentid>     <name>file 2</name>   <node>   <node>        <id>3</id>     <parentid>2</parentid>     <name>file 3</name>   <node>   <node>        <id>4</id>     <parentid></parentid>     <name>file 4</name>   <node>   <node>        <id>5</id>     <parentid>2</parentid>     <name>file 5</name>   <node> </root> 

i output html like:

 <ul>     <li>file 1</li>     <li>file 2</li>        <ul>           <li>file 3</li>           <li>file 5</li>        </ul>     <li>file 4</li>  </ul> 

<?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" indent="yes"/>      <xsl:strip-space elements="*"/>      <xsl:template match="/root">         <ul>             <xsl:apply-templates select="node[string-length(parentid)=0]" />         </ul>     </xsl:template>      <xsl:template match="node">         <li>             <xsl:value-of select="name"/>         </li>         <xsl:variable name="children" select="parent::*/node[parentid=current()/id]" />         <xsl:if test="$children">             <ul>                 <xsl:apply-templates select="$children" />             </ul>         </xsl:if>     </xsl:template> </xsl:stylesheet> 

Comments