プッシュ スタイルのテンプレート ベースの処理では、マッピングを行うためのテンプレートを記述できるはずです。
<xsl:template match="rate/code[. = 'AB']">
<xsl:copy>
<xsl:text>YZ</xsl:text>
</xsl:copy>
</xsl:template>
<xsl:template match="rate/code[. = 'CD']">
<xsl:copy>
<xsl:text>WX</xsl:text>
</xsl:copy>
</xsl:template>
<xsl:template match="rate/code[. = 'EF']">
<xsl:copy>
<xsl:text>QR</xsl:text>
</xsl:copy>
</xsl:template>
そして、特定のテンプレートなどの親要素apply-templates
に対して確実に行う場合rate
<xsl:template match="rate[code]">
<xsl:copy>
<xsl:apply-templates/>
</xsl:copy>
</xsl:template>
または、何も変更したくない場合は、アイデンティティ変換テンプレートで十分です。
<xsl:template match="@* | node()">
<xsl:copy>
<xsl:apply-templates select="@* | node()"/>
</xsl:copy>
</xsl:template>
独自のファイルでマッピングを定義し、そのファイルから値を取得することも検討します。少なくとも XSLT 2.0 を使用すると、次のように実行できます。
<xsl:param name="mapping-url" select="'mapping.xml'"/>
<xsl:variable name="mapping-doc" select="document($mapping-url)"/>
ファイルが次に定義する場所
<mapping>
<map in="AB" out="YZ"/>
<map in="CD" out="WX"/>
<map in="EF" out="QR"/>
</mapping>
そして、例えば使用することができます
<xsl:key name="mk" match="mapping/map" use="@in"/>
<xsl:template match="rate/code[key('mk', ., $mapping-doc)]">
<xsl:copy>
<xsl:value-of select="key('mk', ., $mapping-doc)/@out"/>
</xsl:copy>
</xsl:template>
マップする必要がある各値のテンプレートを作成する代わりに。