"If it has a prefix, then the prefix is expanded into a URI reference using the namespace declarations in effect on the attribute in which the name occurs. The expanded-name consisting of the local part of the name and the possibly null URI reference is used as the name of the object."
I have encountered a very interesting problem related to this. I want to refer to nodes using a namespace qualified value. So I include a namespace attribute in the stylesheet element and then use names in that namespace in my mode values. Everything works fine until I import a stylesheet that uses the same namespace for its modes but different prefixes. In this case it fails. I'll attach an example of something that doesn't work.
The long and short of it is that:
{apply-templates select="*" mode="x:mode1" xmlns:x="http://www.x.com/schema/" /}