# Variable neuen Wert hinzufügen



## KrustyDerClown (2. August 2005)

Hallo,

kann ich irgendwie einer Variablen einen neuen Wert zuweisen ? also irgendwo in einer Template Regel ... weil ich etwas abspeichern möchte was ich später nochmal brauche .. allerdings erst einige später ... also ich kann nicht einfach diese Template Regel wo ich den Wert brauche direkt aufrufen .. da könnte ich dann ja with-param arbeiten.

Aber xsl:variable und xslaram kann ich nur am Anfang festlegen .. und dann nicht mehr ändern. 

Lösung `?

Gruss Krusty


----------



## ipu (3. August 2005)

also etwas deutlicher wäre ganz hilfreich. grundsätzlich kann ich empfehlen, bei http://xsl-rp.de/index.php? vorbeizuschauen wegen definition und gültigkeit und wertzuweisung von variablen und parametern und ... . ich hatte da auch so meine schwierigkeiten mit der wertzuweisung. aber vielleicht versuchst du mal, dich etwas klarer auszudrücken und zu beschreiben, worum es geht. vielleicht kann ich oder jemand anders dir dann helfen.
grüße von ipu


----------



## KrustyDerClown (3. August 2005)

Hi,

ok .. Beispiel:

Ich defeniere am Anfang eine Variable mit dem Wert "Wert_1".

Dann will ich folgendes:

Wenn die XSLT dann in ein bestimmtes Template geht soll er den Wert dieser Variable auf "Wert_2" setzen.

Dann später in der XSLT in einem anderen Template will ich den Wert dieser Variable abfragen.

Ist dies möglich ?


----------



## ipu (5. August 2005)

KrustyDerClown hat gesagt.:
			
		

> Hi,
> 
> ok .. Beispiel:
> 
> ...



nee, irgendwie nicht. siehe auch:

"<xsl:variable> 
definiert eine Variable. Sofern das [select] Attribut vorhanden ist, darf innerhalb des Elements kein Template-Body erscheinen. Nach ihrer Definition innerhalb des Template-Bodys kann ihr Wert nicht mehr geändert werden. Handelt es sich um eine lokale Varibale, ist sie nur innerhalb des Template-Bodys erreichbar. Weist eine lokale Variable den gleichen Namen auf wie eine globale, erhält sie den Wert der globalen Variablen.
Top-Level Element: globale Variable 
innerhalb des Template-Bodys: lokale Variable."
aus: http://xsl-rp.de/index.php?top=1&sub=1&cmd=33&action=cmd
grüße von ipu


----------



## chaertl (31. August 2005)

Hiho,

es gibt eine Möglichkeit mit Variablen zu arbeiten. Dazu muss man allerdings den Saxon-Namespace verwenden. Das ganze schaut dann so aus:


```
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
                            xmlns:saxon="http://icl.com/saxon"
                            extension-element-prefixes="saxon"
                            version="1.1"> 
<xsl:variable name="unique" select="1" saxon:assignable="yes"/>
<saxon:assign name="unique" select="$unique + 1"/>
```

Durch den Zusatz saxon:assignable="yes" bei einer Variablen kann man sie so konfigurieren das sie veränderbar wird. Durch den Tag <saxon:assign> kann man dann dieser Variable einen Wert zuweisen.

Dieser Trick hat mir sehr geholfen mein Stylesheet so umzusetzen wie ich es brauchte.

Gruß
Christian


----------

