Occhio che con xsl:copy-of copi tutto il tag esattamente com'è contenuto, attibuti e tag incorporati compresi! Ti tocca usare il tag xsl:element e il tag xsl:attribute. Per ricavare il nome dei tag mano a mano che li scadisci con un xsl:for-each basta selezionare value-of="name()".
La mia spiegazione non è precisa ma spero che sia chiara.