You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

XSLT如何将ISO Alpha 2国家代码转换为对应国家名称

可行实现思路

方案1:使用XPath 3.1 内置fn:country-name()函数(推荐)

  • 这是最简便的方案,XPath 3.1标准内置了fn:country-name()函数,原生支持ISO 3166-1 alpha-2双字符国家代码到正式国名的转换,不需要自行维护任何映射关系,映射数据由XSLT处理器基于Unicode CLDR标准库内置提供,后续国家代码变更、名称更新都会随处理器版本升级自动同步,无需修改业务代码。
  • 使用示例:
    假设输入XML节点为<countryCode>DE</countryCode>,要输出英文国名可以直接写:
    <!-- 如果XSLT根节点已经声明了xmlns:fn="http://www.w3.org/2005/xpath-functions"命名空间,可省略fn前缀 -->
    <xsl:value-of select="fn:country-name(countryCode, 'en')" />
    
    第二个参数为输出语言的语言代码,如需输出中文国名替换为zh即可。
  • 适用环境:支持XSLT 3.0 / XPath 3.1的处理器,如Saxon 9.8及以上版本。

方案2:外置独立映射文件(兼容XSLT 1.0/2.0老环境)

  • 如果你的运行环境只能使用低版本XSLT,不支持3.1标准函数,可以将映射数据完全从XSLT中剥离,单独使用官方发布的ISO 3166标准XML映射文件,在XSLT中通过document()函数加载后查询即可。
  • 你不需要自行维护这个映射文件,直接使用公开的ISO 3166官方导出数据即可,后续映射更新只需要替换这个外置XML文件,完全不需要修改XSLT代码。
  • 使用示例:
    首先准备外置映射文件iso-3166.xml,结构如下:
    <countries>
      <country code="DE" name="Germany"/>
      <country code="CN" name="China"/>
      <!-- 其余映射由官方数据直接生成 -->
    </countries>
    
    XSLT中调用逻辑:
    <!-- 预加载映射文件 -->
    <xsl:variable name="countryMap" select="document('iso-3166.xml')/countries/country" />
    <!-- 查询对应国名 -->
    <xsl:value-of select="$countryMap[@code = current()/countryCode]/@name" />
    

方案3:调用语言扩展函数(特定运行环境适用)

  • 如果你的XSLT处理器支持调用宿主语言的扩展方法(比如Java环境下的Saxon、.NET环境下的XslCompiledTransform),可以直接调用对应语言内置的地区类库方法实现代码转换,映射数据由标准类库维护,不需要自行更新。
  • 以Java环境为例,可以直接调用ICU4J库的Locale.getDisplayCountry()方法实现转换。

内容的提问来源于stack exchange,提问作者Sudesh

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.25 12:36:01