Avatar billede martin_moth Mester
10. juni 2005 - 14:06 Der er 15 kommentarer og
1 løsning

Opret variabel og tæl antal gange en template bruges

Er lidt rusten i XML/XSL, så måske formulerer jeg mig lift forkert. Håber I forstår:
Har en XML-fil med rigtig mange data i
Her en XSL-fil der har en template, der "looper" over alle de data i XML-filen der matcher og skriver dataene fra XML'en ud i en tabel...

Så er det nogenlunde forklaret...

I princippet som vist:

    <xsl:template name="VisData">
            data nummer nummer ????:
                Værdi <xsl:value-of select="bla bla"/>
    </xsl:template>

Jeg vil blot gerne have en TÆLLER der hvor der står ???? - altså bare en variabel, der sættes op med en hver gang templaten udskrives, og får vist værdien

Håber I fatter hvad jeg mener - det er vist meget simpelt, men er ikek så god til at forklare...
Avatar billede janegil Nybegynder
10. juni 2005 - 15:04 #1
Har en følelse av at du kanskje skal opprette en variabel som inneholder en liste over alle noder som matcher, er det for-each på variablen, og position() vil virke som en slags teller.
Avatar billede Slettet bruger
10. juni 2005 - 16:24 #2
Prøv lige at slå <xsl:number> op i referencen...

/CS
Avatar billede martin_moth Mester
11. juni 2005 - 15:55 #3
sidder og koder i notepad - har ikke så meget at slå op i :o(
Avatar billede nielle Nybegynder
11. juni 2005 - 16:25 #4
Avatar billede Slettet bruger
11. juni 2005 - 22:59 #5
Det er ret afhængigt af strukturen i din XML, men forsøg dig med flg. først:

<xsl:template name="VisData">
            data nummer nummer <xsl:value-of select="position()" />:
                Værdi <xsl:value-of select="bla bla"/>
    </xsl:template>

Hvis det ikke er nok, skal du igang med <xsl:number>...

/CS
Avatar billede martin_moth Mester
12. juni 2005 - 10:25 #6
Kan man ikke oprette en helt ny variabel, og tælle op på den, ligesom i alm. programmering?

Altså

    <xsl:template name="VisData">
      data nummer <værdi af min variabel "Tæller">
      <"Tæller" = "Tæller" + 1>
      Værdi <xsl:value-of select="bla bla"/>
    </xsl:template>
Avatar billede janegil Nybegynder
13. juni 2005 - 13:01 #7
Nei. Den nye verdien vil tilhøre en ny variabel med samme navn, men annet scope. Hvilket  kan være genialt, men det er ikke lett å forstå. (Denne mekanismen gir god performance i liste-baserte språk som ML, men det er litt drøyt å lære seg ML, bare for å forstå XSLT bedre.)

I alle fall, den telleren du inkrementerte, vil være udefinert så snart du er ute av templaten.
Avatar billede martin_moth Mester
20. juni 2005 - 14:43 #8
og der finnes ikke "globale" variable man kan bruge, som er synlige i hele min XSL-fil?
Avatar billede nielle Nybegynder
20. juni 2005 - 18:28 #9
Nej, XSL "programmeringsproget" har faktisk slet ikke variable i den traditionelle forstand fra rigtige programmeringssprog. Man har noget som kaldes "variable", men det er i virkeligheden en dims som er konstant når den først har fået en værdi.

Dit bedste bud er ar bruge position() som nævnt i 11/06-2005 22:59:40.
Avatar billede martin_moth Mester
23. juni 2005 - 00:34 #10
ok. tak
Avatar billede martin_moth Mester
23. juni 2005 - 00:34 #11
smid svar...
Avatar billede nielle Nybegynder
23. juni 2005 - 06:21 #12
Svar :^)
Avatar billede nielle Nybegynder
30. juni 2005 - 21:09 #13
?
Avatar billede martin_moth Mester
05. juli 2005 - 17:21 #14
Men det kom aldrig til at virke... :o(
Avatar billede nielle Nybegynder
06. juli 2005 - 17:25 #15
Jamen i alverdenen hvorfor sagde du så ikke bare det?

Post din eksisterende kode + noget data, og så kigger vi da gerne på den.
Avatar billede martin_moth Mester
07. juli 2005 - 09:02 #16
XML-filen fylder flere 1000 linier og det er svært at pille en repræcentativ bid ud.
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