Variable neuen Wert hinzufügen

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 xsl:param kann ich nur am Anfang festlegen .. und dann nicht mehr ändern. :(

Lösung `?

Gruss Krusty
 
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
 
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 ?
 
KrustyDerClown hat gesagt.:
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 ?

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
 
Hiho,

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

Code:
<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
 

Neue Beiträge

Zurück