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
Post a Comment