dionyssos80: XSLT - unterschiedliche ergebnisse mit <xsl:variable>

Hallo ich habe ein Problem mit XSLT.
Ich speicher mir einen String in einer Variablen. Hier BF1_Nummer. Diese gebe ich am Anfang aus und diese hat den Wert: E97080064, was auch richtig ist. Wenn ich nachfolgend in meiner Anfrage einmal den Wert an sich und einmal den Wert der Variablen nehme, bekomme ich unterschiedliche Werte, d.h nur der feste Wert an sich liefert das richtige Ergebnis. Woran kann das liegen?

<xsl:value-of select="$BF1_Nummer"></xsl:value-of>

<xsl:for-each select="segment[@Id='RFF']//subelement[@Sequence='2'][text()='E97080064']/ancestor::segment/preceding-sibling::node()[2][@Id='ATT']//subelement[@Sequence='4']">

ohne Varible

<xsl:value-of select="."></xsl:value-of>
ohne Variable
</xsl:for-each>

<xsl:for-each select="segment[@Id='RFF']//subelement[@Sequence='2'][text()=$BF1_Nummer]/ancestor::segment/preceding-sibling::node()[2][@Id='ATT']//subelement[@Sequence='4']">

mit Variable
<xsl:value-of select="$BF1_Nummer"></xsl:value-of>
wert:
<xsl:value-of select="."></xsl:value-of>
mit Variable
</xsl:for-each>

Bei der Ausgabe mit Variable hat sich der Wert der Variablen auch nicht verändert.

Danke Martin

  1. Hallo,

    Hallo ich habe ein Problem mit XSLT.
    Ich speicher mir einen String in einer Variablen.

    Ab diesem Zeitpunkt ist der Wer der Variable fest belegt und ud kannst es nicht mehr ändern.

    Hier BF1_Nummer. Diese gebe ich am Anfang aus und diese hat den Wert: E97080064, was auch richtig ist. Wenn ich nachfolgend in meiner Anfrage einmal den Wert an sich und einmal den Wert der Variablen nehme, bekomme ich unterschiedliche Werte, d.h nur der feste Wert an sich liefert das richtige Ergebnis. Woran kann das liegen?

    <xsl:value-of select="$BF1_Nummer"></xsl:value-of>

    <xsl:for-each select="segment[@Id='RFF']//subelement[@Sequence='2'][text()='E97080064']/ancestor::segment/preceding-sibling::node()[2][@Id='ATT']//subelement[@Sequence='4']">

    ohne Varible

    <xsl:value-of select="."></xsl:value-of>

    value-of selektiert den ersten Knoten (in Dokumentordnung) den er findet.
    wenn dein for-each mehrere Knoten trifft, dann wird auch immer der erste genommen.

    Ansonsten ist mir nicht ganz klar was du erreichen willst.

    Grüße
    Thomas