xsl:sort でソートする対象を PHP で切り替えるという処理です。
ちょっとつまずいたのが xsl:sort に渡す select の値。
ここは xsl:for-each の文脈の中で処理されるらしく、単純に xsl:variable で変数を切り替えても処理されないっぽい。
なので仕方なく、 XSLT 側も PHP に変えて、 XML にリクエストされた GET の値で XSLT にリクエストされる GET の値を切り替えて、その値に応じて xsl:sort に渡す select の値を切り替えるようにしたらうまくいった。
とりあえず、他に処理がうまくいかない理由が思いつかないのでたぶんそういうことだと思う。