Avatar billede Daniel.E Praktikant
23. marts 2005 - 09:56 Der er 1 løsning

xslt omkodning af sturktur til træ menu

hej

jeg 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>
Avatar billede Daniel.E Praktikant
23. marts 2005 - 10:00 #1
af underlige årsager er det samme spørgsmål bleven oprettet to gange.. jeg oplevet et stort lag da jeg oprette det.  Det er sansynligvis årsagen. 


lukket.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester