Avatar billede hooh Nybegynder
13. november 2001 - 14:46 Der er 8 kommentarer og
2 løsninger

alle underpunkter fra en xml-fil

Spørgsmålet kommer efter xml-filen

jeg har en xml-fil

<!-- menu.xml start-->
<hoved_menu>
  <menu>
    <menunavn>Menu1</menunavn>
    <menulink>http://www.xxxxx.dk</menulink>
    <undermenu>undermenu 1.1</undermenu>
    <undermenu>undemenu 1.2</undermenu>
    <undermenu>undermenu 1.3</undermenu>
  </menu>
  <menu>
    <menunavn>Menu2</menunavn>
    <menulink>http://www.yyyy.dk</menulink>
    <undermenu>undermenu 2.1</undermenu>
  </menu>
  <menu>
    <menunavn>Menu3</menunavn>
    <menulink>http://www.zzzz.dk</menulink>
    <undermenu>undermenu 3.1</undermenu>
  </menu>
</hoved_menu>

<!-- menu.xml slut-->



Hvordan laver jeg en xsl-fil der kan liste dataerne i en tabel noget lign nedenstående


<table><tr>
<td>
Menu1         
undermenu 1.1
undermenu 1.2
undermenu 1.3
</td>
<td>
Menu2
undermenu 2.1
</td>
<td>
Menu3
undermenu 3.1
</td>
</tr></table>
Avatar billede Slettet bruger
13. november 2001 - 15:00 #1
Dette kunne være en hjælp til at komme igang:

<xsl:stylesheet version=\"1.0\" xmlns:xsl=\"http://www.w3.org/1999/XSL/Transform\">
   
    <xsl:template match=\"/\">
        <xsl:apply-templates select=\"hoved_menu\" />
    </xsl:template>

    <xsl:template match=\"hoved_menu\">
        <table>
            <tr>
                <xsl:apply-templates select=\"menu\" />
            </tr>
        </table>
    </xsl:template>

    <xsl:template match=\"menu\">
        <td>
            <xsl:apply-templates select=\"menunavn\" />
            <xsl:apply-templates select=\"undermenu\" />
        </td>
    </xsl:template>
   
    <xsl:template match=\"menunavn\">
        <b><xsl:value-of select=\".\" /></b><br />
    </xsl:template>
   
    <xsl:template match=\"undermenu\">
        <xsl:value-of select=\".\" /><br />
    </xsl:template>
       
</xsl:stylesheet>

- der er mange muligheder - det smarte er at få delt stylesheet\'et op i templates, så man bare kan justere det enkelte element\'s output. F.eks: er det nemt at gøre hver \"menunavn\" til et link, ved kun at pille i den match\'ende template, f.eks:

<xsl:template match=\"menunavn\">
        <a href=\"{../menulink}\"><xsl:value-of select=\".\" /></a><br />
    </xsl:template>
/CS
Avatar billede ehf Nybegynder
13. november 2001 - 15:02 #2
Du kan også bruge match templates.

<?xml version=\"1.0\"?>
<xsl:stylesheet version=\"1.0\" xmlns:xsl=\"http://www.w3.org/1999/XSL/Transform\">
<xsl:output method=\"html\"/>
    <xsl:template match=\"/hoved_menu\">
        <Table border=\"1\"><xsl:apply-templates /></Table>
    </xsl:template>
   
    <xsl:template match=\"menu\">
        <tr><xsl:apply-templates /></tr>
    </xsl:template>
   
    <xsl:template match=\"menunavn | undermenu\">
        <td><xsl:value-of select=\".\"/></td>
    </xsl:template>
   
    <xsl:template match=\"text()\" />
</xsl:stylesheet>
Avatar billede hooh Nybegynder
13. november 2001 - 15:10 #3
til greystate og ehf

Jeg har prøvet begge, men får kun en blank skærm.

Avatar billede ehf Nybegynder
13. november 2001 - 15:11 #4
Hvordan har du prøvet?
Avatar billede hooh Nybegynder
13. november 2001 - 15:14 #5
øøh direkte copy-paste
Avatar billede hooh Nybegynder
13. november 2001 - 15:18 #6
jo nu virkede det

jeg ændrede
xmlns:xsl=\"http://www.w3.org/1999/XSL/Transform\">

til

xmlns:xsl=\"http://www.w3.org/TR/WD-xsl\">

men kan i sige hvad det skyldes??

hvorfor virker den første ikke?
Avatar billede ehf Nybegynder
13. november 2001 - 15:22 #7
Nen desværre. Det virker lidt underligt.

/ehf
Avatar billede hooh Nybegynder
13. november 2001 - 15:25 #8
kan det have noget med mine 2 linier i xml\'en at gøre :

<?xml version=\"1.0\"?>
<?xml-stylesheet type=\"text/xsl\" href=\"test.xsl\" ?>
Avatar billede Slettet bruger
13. november 2001 - 15:26 #9
Det er fordi du bruger det \"forældede\" Microsoft-namespace. Der skal hurtigst muligt opgraderes til MSXML 3 SP1, eller version 4. http://msdn.microsoft.com/xml

Problemet er at IE bruger MS\'s eget skrammel-namespace hvis man ikke selv gør noget ved det.

Hvis du bruger ASP til dine XML-ting, kan jeg anbefale et kig på: http://www.greystate.dk/xmlobject :-)

/CS
Avatar billede hooh Nybegynder
13. november 2001 - 15:31 #10
ok tak
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