XSL: variable, arrays, node-set osv

No comments
xsl støtter i utganspunktet ikke arrays, men her er en løsning:
deklarer en variabel f.eks som dette:

<xsl:variable name="linker">
<link ID='Person'>Personopplysninger</link>
<link ID='Dekninger'>Dekninger</link>
<link ID='Begunstigelse'>Begunstigelse</link>
<link ID='Pantsettelse' >Pantsettelse</link>
<link ID='Innbetaling' >Innbetaling</link>
<link ID='Avtalegiro' >Avtalegiro</link>
<link ID='Raadgiver' >Rådgiver</link>
</xsl:variable>
denne blir kalt et Tree fragment e.l og kan dessverre ikke brukes slik du ville tro:
<xsl:for-each select="$linker">
<gjør noe fornuftig for hver link...>
for å komme rundt dette må man bruke en funksjon som heter node-set($variabel)
denne er ikke innebygget i standard xsl, men må defineres som en extension-metode.
Der finnes forskjellige utgaver, MS har sin som defineres slik:
<xsl:stylesheet version="2.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
>
nå har du tilgang til funksjonen under namespace msxml på denne måten:
<xsl:for-each select="msxsl:node-set($linker)/link">
<a>
<xsl:attribute name="href">
#<xsl:value-of select="@ID" />
</xsl:attribute>
<xsl:value-of select="."/>
</a>
</xsl:for-each>
Her ser også hvordan du lager en link via xsl.
Du kan altså ikke bruke:
<a href="#<xsl:value-of select='@ID' />"><xsl:value-of select="."/></a>
som i alle fall jeg prøvde på..., men bruker attribute til å sette verdier på <a> elementet.
Det var vel det for denne gang :)
Mvh
Henri

Posted by email from Henris blogg (posterous)

No comments :

Post a Comment