XSTL - Vergleich schlägt fehl

Hendoul

Commander
Registriert
Apr. 2008
Beiträge
2.049
Hi :)

Warum kann ich nicht folgendes schreiben:

Code:
<xsl:for-each select="xcell[@type = 'data']">
        <td >
          <xsl:value-of select="$currentRow/ic:cell[@pos-orig = position()]/text()" />
        </td>
</xsl:for-each>

Der Vergleich @pos-orig = position() matcht nie.

Aber so funktionierts:

Code:
<xsl:for-each select="xcell[@type = 'data']">
        <td>
          <xsl:variable name="position" select="position()"/>
          <xsl:value-of select="$currentRow/ic:cell[@pos-orig = $position]/text()" />
        </td>
</xsl:for-each>

Warum funktioniert die 2. Variante, die erste aber nicht? Es nützt übrigens auch nichts wenn man position() in einen String umwandelt mit string(position()).


greez
Hendoul
 
Hallo,

als Unwissender würde ich vemuten, weil die Variable fehlt: variable name="position...".
 
In der 1. Variante wird die Funktion direkt verwendet. In der 2. einer Variablen zugewiesen, das hat schon seine Richtigkeit ;)
Fragt mich nicht wie die 5. da in den Code-Block kommt, das scheint ein Forum-Bug zu sein.
 
Das ist kein Bug, der [ code ]-Tag versieht seit kurzem einfach jede fünfte Zeile mit ihrer Nummer :)
 
Und sonst kann mir niemand weiterhelfen mit der XSLT-Frage?
 
Ich finde es gradn bisschen schwer nachzuvollziehen, hast du auch ne xml Datei dazu?

Ich würde aber mal behaupten, dass im ersten Teil lediglich position() aufgerufen, aber nicht gespeichert wird, bzw. gar nicht aufgerufen wird.
Wogegen du im 2. Teil das ja explizit aufrust und einer variable zuweist.

Aber hast du das schonmal debuggt? Das wäre sicherlich hilfreich um zu merken, woran es liegt.
 
Die entsprechende Zeile sieht so aus:

<cell pos-orig="2">blabla</cell>

Funktionsaufrufe in den [] sind eigentlich erlaubt. Habe andere Beispiele gefunden wo das gemacht wird (aber halt nicht mit position())

Habe keine Möglichkeit das zu debuggen, nur mit Outputs.
 
Keine Möglichkeit zu debuggen?
1. Visual Studio hat nen xslt debugger, davon gibts ne 30 Tage trail version. (ist aber nicht so gut)
2.XML Spy hat ebenfalls einen debugger, davon gibts glaub ich sogar ne 90 Tage trail. (relativ gut und auch einfach zu handhaben)

weitere gibts auch noch....
XSLT bin ich etwas eingerostet, von daher weiß ich nicht genau, ob das möglich ist oder nicht, meine Vermutung steht aber schon geschrieben.
 
Zurück
Oben