<xsl:variable name="hoge" select="name()"/> と、
ある変数を宣言してから、別のテンプレートをapplyして、その中から
先ほどのhogeを取り出したいのですが、参照できない・・・これが
いわゆるスコープなんでしょうか?

だったらというんで、
<xsl:variable name="hoge">
 <xsl:value-of select="name()"/>
 <xsl:apply-templates select="なにか" />
</xsl:variable>
を思いついたんですが、冷静に考えるとダメ。
お馬鹿ですみません、良い方法はないものでしょうか。