XSLT, renombrando elementos usando la tabla de mapeo basada en el valor del atributo

¿Cómo renombrar los elementos de acuerdo con una tabla de mapeo basada en los atributos del elemento?

Cualquier sugerencia sería muy apreciada. ¿Quizás una plantilla XSLT 2.0 y modificar la tabla de mapeo para una mejor solución?

Muchas gracias de antemano Thomas

XML original:

<transaction>
  <records type="1" >
      <record type="1" >
        <field number="1" >
            <item>223</item>
        </field>
        <field number="2" >
            <item>456</item>
        </field>
      </record>
  </records>

  <records type="14" >
      <record type="14" >
        <field number="1" >
            <item>777</item>
        </field>
        <field number="2" >
            <item>678</item>
        </field>
      </record>

      <record type="14" >
        <field number="1" >
            <item>555</item>
        </field>
      </record>
  </records>
</transaction>

Tabla de mapeo:

<xsl:stylesheet>
  <mapping type="1" from="record" to="first-record">
      <map number="1" from="field" to="great-field"/>
      <map number="2" from="field" to="good-field"/>
  </mapping>

  <mapping type="14" from="record" to="real-record">
      <map number="1" from="field" to="my-field"/>
      <map number="2" from="field" to="other-field"/>
  </mapping>     
</xsl:stylesheet>

Resultado después de la transformación:

<transaction>
  <records type="1" >
      <first-record type="1" >
        <great-field number="1" >
            <item >223</item>
        </great-field>
        <good-field number="2" >
            <item >456</item>
        </good-field>
      </first-record>
  </records>

  <records type="14" >
      <real-record type="14" >
        <my-field number="1" >
            <item >777</item>
        </my-field>
        <other-field number="2" >
            <item >678</item>
        </other-field>
      </real-record>

      <real-record type="14" >
        <my-field number="1" >
            <item >555</item>
        </my-field>
      </real-record>
  </records>
</transaction>

Respuestas a la pregunta(1)

Su respuesta a la pregunta