One of the goals of XSLT design was to make separate templates totally independent and free of side effects. This means that the output of a template depends solely on its input, parameters, and global constants - and on nothing else. In particular, the result of a template does NOT depend on the order in which the templates are executed. This has significant practical advantages (e.g. you can run the templates in parallel) and generally makes the stylesheet much more modular and easier to maintain. Non-changeable variables are an important part of this approach.
Languages similar to XSLT in this respect are called _functional_. Read this classic paper for the rationale and the advantages of functional programming:
http://www.md.chalmers.se/~rjmh/Papers/whyfp.html