Вот предложение, основанное на комментарии, который я сделал. Я написал один таблицу стилей принимает файл отображения в виде
<mr:mapping-rules xmlns:mr="http://example.com/mr">
<context pattern="Record">
<field src="field1" dest="field1337" />
</context>
</mr:mapping-rules>
для создания таблицы стилей в виде
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
<xsl:template match="@* | node()">
<xsl:copy>
<xsl:apply-templates select="@* | node()"/>
</xsl:copy>
</xsl:template>
<xsl:template match="Record/field1">
<xsl:element name="field1337">
<xsl:apply-templates select="@* | node()"/>
</xsl:element>
</xsl:template>
</xsl:stylesheet>
Стилевой, что создает выше таблицу стилей, как его выход
<xsl:stylesheet
version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:mr="http://example.com/mr"
xmlns:oxsl="http://example.com/xsl"
exclude-result-prefixes="oxsl mr">
<xsl:namespace-alias stylesheet-prefix="oxsl" result-prefix="xsl"/>
<xsl:output indent="yes"/>
<xsl:template match="/">
<oxsl:stylesheet version="1.0">
<oxsl:template match="@* | node()">
<oxsl:copy>
<oxsl:apply-templates select="@* | node()"/>
</oxsl:copy>
</oxsl:template>
<xsl:apply-templates/>
</oxsl:stylesheet>
</xsl:template>
<xsl:template match="mr:mapping-rules/context/field">
<oxsl:template match="{../@pattern}/{@src}">
<oxsl:element name="{@dest}">
<oxsl:apply-templates select="@* | node()"/>
</oxsl:element>
</oxsl:template>
</xsl:template>
</xsl:stylesheet>
Затем вы можете запустить созданную таблицу стилей на входе, таком как
<Root>
<Record-List>
<Record>
<field1>foo</field1>
<field2>bar</field2>
<field3>baz</field3>
</Record>
</Record-List>
</Root>
и выводит
<Root>
<Record-List>
<Record>
<field1337>foo</field1337>
<field2>bar</field2>
<field3>baz</field3>
</Record>
</Record-List>
</Root>
Конечно файл отображение может быть адаптирован к вашим потребностям, в основном я пытался показать образец, генерирующий вторую таблицу стилей из файла отображения, чтобы затем быть применены к входной выборке.
Прежде всего я хотел бы предложить, чтобы не перечислить поля, которые не должен быть изменен. Затем я задаюсь вопросом, не нужно ли отображать контекст, как путь родителя или предка. И я предложил бы затем решить проблему, написав одну таблицу стилей, которая берет файл сопоставления и создает новую таблицу стилей, которая реализует конкретное сопоставление для данного файла сопоставления. –