Short answer? Variables in XSLT are write once only so you can't change the value after the initial assignment.
"The best way to think about an xsl:param or an xsl:variable element is that once you associate a parameter with a name and content, that element is immutable;"
From
MSDN[
^]