Интересный вопрос. Есть несколько доступных маршрутов. Я собирался предложить передать recordId как переменную в xslt, но после тщательного изучения я вижу, что вам нужно заменить несколько элементов 'recordId' для предположительно различных кодов земли, что, конечно, не тривиально.
В этом случае я бы предложил вам использовать xslt с таблицей поиска. Поскольку я сам не использовал ни одного из них, мне было любопытно, поэтому я возился с некоторыми примерами и придумал следующее:
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:s="http://example.country"
xmlns:xs="http://www.w3.org/2001/XMLSchema"
exclude-result-prefixes="xs"
version="2.0">
<!-- copy everything that is not country.recordId -->
<xsl:template match="@*|node()">
<xsl:copy>
<xsl:apply-templates select="@*|node()" />
</xsl:copy>
</xsl:template>
<!-- create a lookup variable based on the table at the bottom -->
<xsl:key name="id-lookup" match="s:id" use="s:abbr"/>
<xsl:variable name="allrecordids" select="document('')/*/s:recordIds"/>
<!-- replace the country.recordIds -->
<xsl:template match="country.recordId">
<xsl:apply-templates select="$allrecordids">
<xsl:with-param name="curr-label" select="."/>
</xsl:apply-templates>
</xsl:template>
<xsl:template match="s:recordIds">
<xsl:param name="curr-label"/>
<country.recordId><xsl:value-of select="key('id-lookup', $curr-label)/s:nr"/></country.recordId>
</xsl:template>
<!-- the lookup table -->
<s:recordIds>
<s:id><s:abbr>AFG</s:abbr><s:nr>1234</s:nr></s:id>
<s:id><s:abbr>IND</s:abbr><s:nr>1235</s:nr></s:id>
</s:recordIds>
</xsl:stylesheet>
Я сделал большое предположение, что 'IND' и 'AFG' всегда приводят к одному и тому же числу, так что, надеюсь, это поможет! По крайней мере, это было весело :)