Alex: Variable in XSL/T

kann mir jemand helfen,

ich arbeite noch nicht so lange mit XSL und laut der Beschreibung hier auf der Homepage ist es ist zwar möglich, Variable in XSL zu definieren aber diese behalten dann den gesamten "Programm"Lauf ihren Wert.
Gibt es eine Möglichkeit, wie ich eine Variable mit einem Ausgangswert füllen und diesen, abhängig von XML, ändere:

Beispiel :

<xsl:variable name="Absatz1" select="0"/>
<xsl:variable name="Absatz2" select="0"/>

<xsl:if test="TESTDaten1">
<xsl:value-of select="$Absatz1 + 1"/>
<xsl:value-of select="$Absatz2 + 1"/>
</xsl:if>

An dieser Stelle möchte ich, dass Absatz den Wert 1 behält, da ich evtl. noch weitere "Absätze" haben will ->

<xsl:if test="TESTDaten2">
<xsl:value-of select="$Absatz1 + 1"/>
<xsl:value-of select="$Absatz2 + 1"/>
</xsl:if>

so dass Absatz hier 2 enthält. Gibt es dafür evtl. eine andere Lösung?

Für einen Ratschlag wäre ich sehr dankbar!
Alex

  1. Hi,

    Gibt es eine Möglichkeit, wie ich eine Variable mit einem Ausgangswert füllen und diesen, abhängig von XML, ändere:

    XSLT sieht Variablen im mathematischen Sinne: beliebig, aber fest. Es existiert kein Weg, einen einmal gesetzten Wert zu verändern. Arbeite mit Call-Templates u.ä., welches die Übergabe von Werten erlaubt, bzw. ermittle den gewünschten Wert auf andere Weise.

    <xsl:value-of select="$Absatz1 + 1"/>
    <xsl:value-of select="$Absatz2 + 1"/>

    Wieso glaubst Du eigentlich, das _Auslesen_ eines Wertes würde diesen verändern?

    Cheatah

    --
    X-Self-Code: sh:( fo:} ch:~ rl:° br:> n4:& ie:% mo:) va:) de:] zu:) fl:{ ss:) ls:~ js:|
    X-Self-Code-Url: http://emmanuel.dammerer.at/selfcode.html
    X-Will-Answer-Email: No
    X-Please-Search-Archive-First: Absolutely Yes
  2. Gibt es eine Möglichkeit, wie ich eine Variable mit einem Ausgangswert füllen und diesen, abhängig von XML, ändere:

    Chetah schrieb ja schon, dass das nicht geht. Wenn du allerdings eine Möglichkeit suchst, eine Variable abhängig von irgendetwas zu befüllen und du es so

    <xsl:if test=...>
      <xsl:variable name=... select="wert" />
    </xsl:if>

    probierst und daran wegen des Geltungsbereiches scheiterst. Dann suchst du eventuell nur sowas:

    <xsl:variable name=... />
      <xsl:if test=...>wert</xsl:if>
    </xsl:variable>

    so dass Absatz hier 2 enthält. Gibt es dafür evtl. eine andere Lösung?
    Für einen Ratschlag wäre ich sehr dankbar!

    Ansonsten schildere dein Problem doch mal von ein/zwei Ebenen weiter oben betrachtet. Vielleicht kann man ja da ansetzen...

    1. Hallo,

      Wenn du allerdings eine Möglichkeit suchst, eine Variable abhängig von irgendetwas zu befüllen und du es so

      <xsl:if test=...>
        <xsl:variable name=... select="wert" />
      </xsl:if>

      Diese Variable lebt nur innerhalb dieses <xsl-if>.

      probierst und daran wegen des Geltungsbereiches scheiterst.

      Ja, das wird er.

      Dann suchst du eventuell nur sowas:
      <xsl:variable name=... />
        <xsl:if test=...>wert</xsl:if>
      </xsl:variable>

      Das ist eine korrekte Lösung. ;-)

      Grüße
      Thomas

  3. Hallo,

    <xsl:variable name="Absatz1" select="0"/>
    <xsl:variable name="Absatz2" select="0"/>

    <xsl:if test="TESTDaten1">
    <xsl:value-of select="$Absatz1 + 1"/>
    <xsl:value-of select="$Absatz2 + 1"/>
    </xsl:if>

    An dieser Stelle möchte ich, dass Absatz den Wert 1 behält, da ich evtl. noch weitere "Absätze" haben will ->

    <xsl:if test="TESTDaten2">
    <xsl:value-of select="$Absatz1 + 1"/>
    <xsl:value-of select="$Absatz2 + 1"/>
    </xsl:if>

    so dass Absatz hier 2 enthält. Gibt es dafür evtl. eine andere Lösung?

    So wie du es denkst und versuchst ist das nicht möglich. Da ich dein XML aber nicht kenne, kann ich dir auch keine andere Antwort geben.

    Grüße
    Thomas