Quello che dici mi sembra che con XSLT 1.0 non si possa assolutamente fare, devi aspettare che esca XSLT 2.0 .
Come ben vedi si chiama variable ma di variabile ha ben poco, si avvicina molto ad una costante.
Il valore di una xsl:variable può variare solamente se gli associamo un valore di un tag o attributo all'interno di un ciclo for-each.

Cezar