Axel P.: Parameter im Select-Attribut auslesen

Liebe Selfhtmler,

seit ein paar Tagen versuche ich mich nun mit XSLT. Folgendes will einfach nicht gelingen: die Verwendung von Parametern innerhalb von Select-Attributen. Da wirft mein XSLT-Prozessor immer Fehler raus... Hier ein Codeausschnitt zur Verdeutlichung:

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns="htp://www.w3.org/TR/REC-html40">
[1] <xsl:param name="idField" select="'name'" />
 <xsl:output method="html" version="4.0" encoding="iso-8859-1" indent="yes" />

<xsl:template match="/">

[2]    <xsl:for-each select="/$idField/row[position()=1]/*">
[3]      <xsl:if test="name() != $idField">
           <th><xsl:value-of select="name()" /></th>
         </xsl:if>
      ...

Ich will also den Parameter idField verwenden [1]. In der If-Abfrage in Zeile [3] funktioniert es auch problemlos, jedoch nicht in der XPath-Angabe in Zeile [2]. (Ich habe es auch schon mit XPath-Funktionen wie string() und concat() versucht, das brachte jedoch auch nichts.) Kann mir jemand weiterhelfen?

Ach so: Ich nutze die XSL-Funktionen von PHP5.

Schöne Grüße
Axel

  1. Hallo,

    [2]    <xsl:for-each select="/$idField/row[position()=1]/*">

    Ich will also den Parameter idField verwenden [1]. In der If-Abfrage in Zeile [3] funktioniert es auch problemlos, jedoch nicht in der XPath-Angabe in Zeile [2].

    Im Select von for-each muss ein XPath-Ausdruck stehen, der ein Konenmenge zurückgibt. Du hast in deinem Parameter einen String stehen und der gilt eben nicht als "Pfadangabe" durch den XML-Baum.

    <xsl:for-each select="/*[name() = $idField]/row[position()=1]/*">
    wodurch sich auch das xsl:if erübrigt.

    Grüße
    Thomas

    --
    Surftip: kennen Sie schon Pipolino's Clowntheater?
    http://www.clowntheater-pipolino.net/