Renomeando nós e valores com xslt

Eu sou novo no xslt e tenho uma tarefa que não sei ao certo para onde ir. Desejo renomear nós, mas mantenho o formato de todas as declarações de nós. No contexto real em que aplicarei isso, farei uma série de renomeações como essa, mas por uma questão de brevidade, o exemplo que escrevi envolve apenas a renomeação de um nó. Estou usando o XSL 1.0.

Entrada:

<variables>
  <var>
    <RENAME> a </RENAME>
  </var>
  <var RENAME='b'/>
  <var>
    <DO_NOT_TOUCH> c </DO_NOT_TOUCH>
  </var>
  <var DO_NOT_TOUCH='d'/>
</variables>

Saída desejada:

<variables>
  <var>
    <DONE> a </DONE>
  </var>
  <var DONE='b'/>
  <var>
    <DO_NOT_TOUCH> c </DO_NOT_TOUCH>
  </var>
  <var DO_NOT_TOUCH='d'/>
</variables>

Meu xslt:

<xsl:template match="RENAME">
        <RENAMED>
                <xsl:apply-templates select="@*|node()"/>
        </RENAMED>
</xsl:template>

<xsl:template match="@*|node()">
        <xsl:copy>
                <xsl:apply-templates select="@*|node()"/>
        </xsl:copy>
</xsl:template>

Saída atual

<variables>
  <var>
    <RENAMED> a </RENAMED>
  </var>
  <var RENAME="b">
  </var>
  <var>
    <DO_NOT_TOUCH> c </DO_NOT_TOUCH>
  </var>
  <var DO_NOT_TOUCH="d">
  </var>
</variables>

questionAnswers(2)

yourAnswerToTheQuestion