Parameter im Select-Attribut auslesen
Axel P.
- xsl
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
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