Hallo zusammen,
folgendes Problem:
Hier ein Ausschnitt aus einem xsl:template, das ein anderes Template aufruft:
XML-Code:
<td class="RahmenLeistungsziffer" style="border-left:1px solid black">
<xsl:call-template name="BuildLeistungszifferBlock">
<xsl:with-param name="iBlockNummer" select="1" />
<xsl:with-param name="sLeistungsziffer" select="Formular/Components/edG01_Leistungsziffer/@value" />
<xsl:with-param name="sAnzahlBehandlungen" select="Formular/Components/edG01_AnzahlBehandlungen/@value" />
<xsl:with-param name="sBehandlungstageWoche" select="Formular/Components/edG01_BehandlungstageWoche/@value" />
</xsl:call-template>
</td>
<td class="RahmenLeistungsziffer" style="border-left:1px solid black">
<xsl:call-template name="BuildLeistungszifferBlock">
<xsl:with-param name="iBlockNummer" select="2" />
<xsl:with-param name="sLeistungsziffer" select="Formular/Components/edG02_Leistungsziffer/@value" />
<xsl:with-param name="sAnzahlBehandlungen" select="Formular/Components/edG02_AnzahlBehandlungen/@value" />
<xsl:with-param name="sBehandlungstageWoche" select="Formular/Components/edG02_BehandlungstageWoche/@value" />
</xsl:call-template>
</td>
Natürlich ist es jetzt sehr unschön, dass 4(!) Parameter übergeben werden, wo doch eigentlich einer (nämlich iBlockNummer) völlig ausgereicht hätte.
Mit concat hätte man so vorgehen können:
select="concat('Formular/Components/edG0', $iBlockNummer, '_Leistungsziffer/@value')"
Nun ist es aber so, dass die Funktion "concat" mir -leider - einen String statt einem ausführbaren XPath-Befehl zurückgibt. Also liefert mir der select auch einen String (nämlich z.B. 'Formular/Components/edG01_Leistungsziffer/@value') anstatt dem Inhalt des Attributs "value" des Knotens "edG01_Leistungsziffer".
Wie bekomme ich es hin, dass der String als XPath und nicht als string interpretiert wird?
Danke für eure Hilfe.
Gruß
//Edit:
Natürlich hätte man auch so vorgehen können:
select="Formular/Components/*[$iBlockNummer + $Offset]/@value"
Aber das ist schlicht und einfach grauenhaft...