xslt omkodning af sturktur til træ menu
hejjeg har dette XSL dokument:
<?xml version="1.0" encoding="iso-8859-1" ?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="xml" omit-xml-declaration="yes" indent="yes" />
<xsl:template match="/">
<html>
<head>
<title>Folders</title>
</head>
<body>
<xsl:apply-templates />
</body>
</html>
</xsl:template>
<xsl:template match="folders">
<dl id="tree">
<dd class="pluslast">
<dl>
<dt><a>Folders</a></dt>
<xsl:apply-templates />
</dl>
</dd>
</dl>
</xsl:template>
<xsl:template match="folder">
<dd>
<xsl:if test="position() = last()">
<xsl:attribute name="class">last</xsl:attribute>
</xsl:if>
<xsl:apply-templates select="@name" />
</dd>
</xsl:template>
<xsl:template match="folder[folder]">
<dd>
<xsl:attribute name="class">plus<xsl:if test="position() = last()">last</xsl:if></xsl:attribute>
<dl>
<dt><xsl:apply-templates select="@name" /></dt>
</dl>
</dd>
<xsl:apply-templates />
</xsl:template>
<xsl:template match="folder/@name">
<a href="#"><xsl:value-of select="." /></a>
</xsl:template>
</xsl:stylesheet>
Jeg er ved at lave en træ menu. Men problemet er ikke en fejl, det handler om at flytte rundt på nogle ting. Jeg har siddet med det i 10 timer sammenlagt, og nu fik jeg bare nok. heh
XSL dokumentet skal spytte en struktur ud som er denne:
+ Folders
INBOX
Trash
Sent
Drafts
OnkelBent
+ TanteHanne
Sludder
XML dokumentet ser sådanne ud:
<folders>
<folder name="INBOX" >
<folder name="Trash" />
<folder name="Sent" />
<folder name="Drafts" />
<folder name="OnkelBent" />
<folder name="TanteHanne" >
<folder name="Sludder" />
</folder>
</folder>
</folders>
Det umiddelbare som mange sikkert bil spotte med det samme er at den yderste mappe name="INBOX" er forældre til alle de andre. Men det skal ikke vises sådan.
Det er vigtigt at denne HTML struktur og tag inkapsulering overholdes.
<dl id="tree">
<dt>Tree Menu</dt>
<dd class="plus">
<dl>
<dt><a href="#">Test1</a></dt>
<dd><a href="#">Test1</a></dd>
<dd class="last"><a href="#">Test1</a></dd>
</dl>
</dd>
<dd class="plus">
<dl>
<dt><a href="#">Test2</a></dt>
<dd><a href="#">Test2</a></dd>
<dd class="plus">
<dl>
<dt><a href="#">Test3</a></dt>
<dd><a href="#">Test3</a></dd>
<dd class="last"><a href="#">Test3</a></dd>
</dl>
</dd>
<dd class="pluslast">
<dl>
<dt><a href="#">Test4</a></dt>
<dd><a href="#">Test4</a></dd>
<dd class="last"><a href="#">Test4</a></dd>
</dl>
</dd>
</dl>
</dd>
</dl>