Hi!
If you had mentioned the sample code where you felt you need to "Over write the variable" then any of the experts like Tomalak, Dimitre would have suggested you a better (alternative) option/suggestion.
Well. If its just your doubt (like how one can deal with a language where variables cannot be varied !!!??) then I bet you will get clarified as you go on practicing..
When I started my carrier with XSLT as a beginner even I had the same doubt .. but soon I realized .. We don't need variables to vary. ;) ;)
I feel its my pleasure to work with XSLT.
You can treat templates the way you deal with functions and procedures. (not precisely)
You can call them recursively ..
The extent of data-manipulation you can imagine, can be achieved in one or the other way.. (may not be much easier but not impossible atleast)..
coming back to your question, if you really need to change the value of the variable .. then feel free to define a new variable .. !? Use math operators, inbuilt function etc on the value of previous variable, and instead of assigning back to the same variable .. assign it to a new one .. and use it as you wish.
That may not be the efficient technique but can be a Step 1.
On the other hand .. you can send the expression .. [like translate(., abc, ABC)
] as Parameters (Param) to other templates .. or can be written directly as output.. !! so as to avoid variable to vary. :))