concat naam van element

Status
Niet open voor verdere reacties.

Snarffy

Gebruiker
Lid geworden
23 okt 2009
Berichten
35
Ik heb het volgende probleem, met de tweede regel van onderstaand stukje script wil ik de inhoud van het element "gen01" uit m'n xml file laten ophalen. Wat deze regel echter laat zien is de tekst "gen01". het zal wel heel eenvoudig op te lossen zijn maar ik kan er niet opkomen, is er misschien iemand met een geniaal idee ?

Alvast bedankt

[XML]<xsl:when test="Generatie=1">
<xsl:value-of select="concat('gen',format-number(Generatie,'00'))"/>[/XML]
 
Je krijgt waarom je vraagt: een stuk tekst :D
wat je wil is:
<xsl:call-template name="genname">
<xsl:with-param name="gen"><xsl:value-of select="concat('gen',format-number(Generatie,'00'))"/></xsl:with-param>
</xsl:call-template>

<xsl:template name="genname">
<xsl:param name="gen"></xsl:param>
<xsl:value-of select="$gen"/>
</xsl:template>

Regards
 
Rob sorry dat ik zo laat reageer, bedankt voor je antwoord.

Ik heb jouw oplossing uitgeprobeerd maar het resultaat is hetzelfde !

Regards
 
Laatst bewerkt:
name()

Data file:[XML]<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="a.xsl"?>
<data>
<node>
<Generatie>1</Generatie>
<gen01>Dit is gen01</gen01>
<gen02>Dit is gen02</gen02>
<gen03>Dit is gen03</gen03>
</node>
</data>[/XML]
Stylesheet:[XML]<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">

<xsl:template match="/data/node">
<xsl:call-template name="genname">
<xsl:with-param name="gen"><xsl:value-of select="concat('gen',format-number(Generatie,'00'))"/></xsl:with-param>
</xsl:call-template>
</xsl:template>


<xsl:template name="genname">
<xsl:param name="gen"></xsl:param>
<xsl:value-of select="*[name()=$gen]"/>
</xsl:template>

</xsl:stylesheet>[/XML]
Output:
Code:
Dit is gen01

Dus de waarde van de node Generate wordt met een voorloop nul geplakt achter de text gen en dat wordt doorgegeven aan de template genaamd 'genname'. Die zoek in de huidige node een childnode met de naam die was meegegeven aan de template.
Generatie=1
gen='gen01'
<gen01>Dit is gen01</gen01>

De name() functie is dus wat je nodig hebt.
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan