[XSLT] Parameter bewerken voor input in template

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

  • Jiggle
  • Registratie: December 2007
  • Laatst online: 22-03-2021
Hopelijk een makkelijke vraag:

Ik heb in een XSLT een template gemaakt die een aantal elementen netjes in een tabel zet. Deze roep ik vervolgens met parameters aan. De input voor deze parameters staat echter nog niet in de juiste lay-out. Hoe kan ik in de XSLT de parameter nog bewerken voordat ik hem meegeef aan de template?

Ik gebruik de template om steeds een nieuwe rij van de tabel te vullen. Maar de rijen kunnen onderling wel een andere lay-out hebben.
De parttimegraad moet bijv met een percentage weergegeven worden, en het salaris met een duizendteken en ",--" erachter.

In onderstaand voorbeeld is parttimegraad een array met drie elementen, zeg 1, 0.6 en 0. In de tabel wil ik deze drie elementen weergegeven zien als 100%, 60% en 0%.

Kan dat gemakkelijk? Ik kan de input niet van tevoren al bewerken, dat moet in de XSLT.

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
<xsl:template name="tabel_OP_Template" match="*">
<xsl:param name="item"/>
  <tr>
    <xsl:for-each select="$item">
      <td><xsl:value-of select="."/></td>
    </xsl:for-each>
  </tr>
</xsl:template>

<xsl:template match="*">
  <table>
  <caption>Titel tabel</caption>
    <xsl:call-template name="tabel_OP_Template"> 
      <xsl:with-param name="item" select="./parttimegraad/item"/>
    </xsl:call-template>
  </table>
</xsl:template>

[ Voor 12% gewijzigd door Jiggle op 18-06-2010 11:09 ]


Acties:
  • 0 Henk 'm!

  • Pkunk
  • Registratie: December 2003
  • Laatst online: 11-09 17:52
Ik snap niet zo goed waarom je de param wil bewerken en niet de value-of select gewoon zo aanpast dat hij het correct weergeeft.

Wat overigens zo kan
XML:
1
<xsl:value-of select="concat(. * 100,'%')"/>


Je for-each wordt trouwens niet afgesloten, maar ik neem aan dat dat een typo is? :)

[ Voor 42% gewijzigd door Pkunk op 18-06-2010 11:05 ]

Hallo met Tim


Acties:
  • 0 Henk 'm!

  • Jiggle
  • Registratie: December 2007
  • Laatst online: 22-03-2021
Sorry, dat stond er inderdaad niet bij.
Ik gebruik de template om steeds een nieuwe rij van de tabel te vullen. Maar de rijen kunnen onderling wel een andere lay-out hebben.
De parttimegraad moet bijv met een percentage weergegeven worden, en het salaris met een duizendteken en ",--" erachter.

Vandaar dat ik deze lay-out al meteen met de input wil meegeven.

(Heb het ook even bij de OP erbij gezet.)

Acties:
  • 0 Henk 'm!

  • Pkunk
  • Registratie: December 2003
  • Laatst online: 11-09 17:52
Als ik het goed begrijp ziet je xml er dus ongeveer zo uit:
XML:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
<root>
    <parttimegraad>
      <item>1</item>
      <item>0.6</item>
      <item>0.2</item>
    </parttimegraad>
    <salaris >
      <item>1000</item>
      <item>1600</item>
      <item>2000</item>
    </salaris >
    <nogiets>
      <item>1</item>
      <item>0.6</item>
      <item>0.2</item>
    </nogiets>
  </root>


Dan zou je dit kunnen doen:
XML:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
 <xsl:template match="*">
    <table>
      <caption>Titel tabel</caption>
      <xsl:apply-templates select="./*" mode="row"/>
    </table>
  </xsl:template>

  <xsl:template match="parttimegraad|salaris|ietsanders" mode="row">
    <tr>
      <xsl:apply-templates select="item"/>
    </tr>
  </xsl:template>

  <xsl:template match="parttimegraad/item">
    <td>
      <xsl:value-of select="concat(. * 100,'%')"/>
    </td>
  </xsl:template>

  <xsl:template match="salaris/item">
    <td>
      <xsl:value-of select="."/>,-
    </td>
  </xsl:template>

  <xsl:template match="ietsanders/item">
    <td>
      <a>
        <xsl:value-of select="."/>
      </a>
    </td>
  </xsl:template>

Hallo met Tim