[XSL] loopjes

Pagina: 1
Acties:

  • zoepercavia
  • Registratie: September 2001
  • Laatst online: 26-12-2025
in mijn XML heb ik de volgende tag:
code:
1
<datum dag="3" maand="9" jaar="2002" string="3 september 2002"/>


nou wil ik deze omzetten met XSL in een setje van dropdownlists (simpelweg omdat het de netste manier is). Ik heb nu de volgende code:
code:
1
2
<xsl:choose><xsl:when test="@jaar=1950"><option value="1950" selected="selected">1950</option></xsl:when><xsl:otherwise><option value="1950">1950</option></xsl:otherwise></xsl:choose>
<xsl:choose><xsl:when test="@jaar=1951"><option value="1951" selected="selected">1951</option></xsl:when><xsl:otherwise><option value="1951">1951</option></xsl:otherwise></xsl:choose>

enz.. tot 2020. Nu vroeg ik me af of dit misschien iets netter korter kan dmv een loop idee (for i = 1950 to 2020 schrijf iets). Maar ik heb dat nog niet kunnen ontdekken. Kan zoiets uberhaupt wel in XSL?

Panacea.NL als je geinteresserd bent in IT en Geneeskunde!


  • marcusk
  • Registratie: Februari 2001
  • Laatst online: 26-09-2023
je kunt het recursief doen:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
<xsl:template name="blaat"> 
  <!-- heb geen zin om een meer toepasselijke naam dan 'blaat' te bedenken ;) -->
  <xsl:param name="start"/>
  <xsl:param name="eind"/>
  <xsl:param name="sel"/>

  <xsl:choose>
    <xsl:when test="$sel = $start">
      <option value="$start" selected="selected"><xsl:value-of select="$start"/></option>
    </xsl:when>
    <xsl:otherwise>
      <option value="$start"><xsl:value-of select="$start"/></option>
    </xsl:otherwise>
  </xsl:choose>

  <xsl:if test="not($start = $eind)">
    <call-template name="blaat">
      <with-param name="start"><xsl:value-of select="$start + 1"/></xsl:with-param>
      <with-param name="eind"><xsl:value-of select="$eind"/></xsl:with-param>
      <with-param name="sel"><xsl:value-of select="$sel"/></xsl:with-param>
    </call-template>
  </xsl:if>
</xsl:template>

(niet getest, maar moet wel ongeveer zo werken)
en dan aanroepen met:
code:
1
2
3
4
5
<xsl:call-template name="blaat">
  <with-param name="start>1950</xsl:with-param>
  <with-param name="eind">2020</xsl:with-param>
  <with-param name="sel"><xsl:value-of select="@jaar"/></xsl:with-param>
</xsl:call-template>

[ Voor 0% gewijzigd door marcusk op 09-09-2002 15:34 . Reden: aanroepcode erbij ]


Verwijderd

kun je niet gewoon met een for-each door iedere date node gaan en het @jaar attribute "echo'en" ...?

  • brammetje
  • Registratie: Oktober 2000
  • Laatst online: 12-01-2025
er is waarschijnlijk maar 1 date-node welke selected moet zijn, de rest moet gewoon verzonnen worden (denk ik:))