Simple XML/XSL tree navigation
by jp on August 21, 2003
Here is a simple XML/XSL tree navigation. I have made almost all XML/XSL navigations based on this XSL.
XSL transforms XML tree to XHTML list view.
XML source
<?xml version="1.0"?> <tree> <folder type="folder"> <name>item 01</name> </folder> <folder type="folder"> <name>item 02</name> </folder> <folder type="folder"> <name>item 01</name> <folder type="folder"> <name>item 01 01</name> <folder type="folder"> <name>item 01 01 01</name> <folder type="folder"> <name>item 01 01 01 01</name> <folder type="folder"> <name>item 01 01 01 01 01</name> </folder> </folder> </folder> </folder> </folder> <folder type="folder" value="04 folder"> <name>item 03</name> </folder> </tree>
XSL Source
<?xml version="1.0"?> <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> <xsl:output method = "xml" /> <xsl:template match="/"> <html> <body><xsl:apply-templates select="tree/folder" /></body> </html> </xsl:template> <xsl:template match="folder"> <xsl:choose> <xsl:when test="boolean(folder)"> <li><xsl:value-of select="name" /></li> </xsl:when> <xsl:otherwise> <li><xsl:value-of select="name"/></li> </xsl:otherwise> </xsl:choose> <ul> <xsl:if test="."><xsl:apply-templates select="folder" /></xsl:if> </ul> </xsl:template> </xsl:stylesheet>