Avatar billede karpin123 Nybegynder
15. marts 2006 - 19:02 Der er 3 kommentarer og
1 løsning

hvordan gemmer man nodeværdi?

Hej

Jeg vil gerne gemme en værdi fra en template så jeg kan sammenligne den med den tilsvarende værdi fra næste gang templaten bliver kaldt. Hvordan gør man det?

fx:

XML:

<Bil>
  <maerke>BMW</maerke>
  <farve>Sort</farve>
</Bil>
<Bil>
  <maerke>Ford</maerke>
  <farve>Gul</farve>
</Bil>


Her vil jeg gerne på gemme værdien for <maerke> for den første bil så jeg kan sammenligne den med <maerke> for den næste bil.
Avatar billede Slettet bruger
15. marts 2006 - 20:07 #1
Dette er et typisk levn fra ASP/PHP, hvor man "looper" over en masse værdier og skriver ting ud "on-the-fly"... man skal tænke lidt anderledes i XSLT, men nu til sagen:

Hvis du f.eks. kun vil have een overskrift for hvert bilmærke, kan du gøre det at du sorterer <Bil> elementerne på <maerke>, og tester om den foregående er forskellig fra den nuværende; Hvis den er, starter et nyt maerke her:

<xsl:for-each select="Bil">
  <xsl:sort select="maerke" data-type="text" />
  <xsl:if test="preceding-sibling::Bil/maerke != current()/maerke">
      <h2><xsl:value-of select="maerke" /></h2>
  </xsl:if>
  <p> ... (normalt output for hver Bil ) </p>
</xsl:for-each>

/CS
Avatar billede Slettet bruger
15. marts 2006 - 20:09 #2
Oops - den skal se sådan ud, da den kun skal se på den første foregående:

<xsl:if test="preceding-sibling::Bil[1]/maerke != current()/maerke">

/CS
Avatar billede karpin123 Nybegynder
17. marts 2006 - 09:59 #3
Hej greystate

Det ser ud som om at den sammenligner med den node der kommer før i w´xml'en og ikke den der kommer før i visningen efter sorteringen!?
Avatar billede karpin123 Nybegynder
17. marts 2006 - 11:26 #4
Jeg løste det anderledes men tak for svaret!
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