【问题标题】:xslt - how to convert iso Alpha 2 code to Country namexslt - 如何将 iso Alpha 2 代码转换为国家名称
【发布时间】:2022-01-03 17:40:15
【问题描述】:

我有一个 xml,其中包含两个字符 alpha 代码,需要将其转换为完全限定的国家/地区名称。例如,DE 应该变成德国。我知道 xslt 模板可用于将列表保留在 xslt 中以获取相关名称,但是我对该设计不满意,并且正在寻找一个 xslt 函数(或类似的东西),它将避免将来对映射的任何维护。请让我知道您对此的看法。谢谢。

【问题讨论】:

  • 您可以将映射列表放在一个独立的 XML 文档中并从那里查找。
  • 不幸的是,我无法将独立的 xml 添加到服务器,所以我正在寻找类似 rest api 的东西。谢谢你的建议。

标签: xslt xslt-2.0


【解决方案1】:

也许调用一个网络服务,例如使用 XSLT 3,您可以处理从大多数 REST API 返回的 JSON

  <xsl:template match="code">
    <country>{json-doc('https://restcountries.com/v2/alpha/' || .)?name}</country>
  </xsl:template>

对于 XSLT 2,您可以使用返回 XML 格式的服务,例如

  <xsl:template match="code">
    <country>
       <xsl:value-of
         select="doc(concat('https://api.worldbank.org/v2/country/', .))/countries/country/name"
         xpath-default-namespace="http://www.worldbank.org"/>
    </country>
  </xsl:template>

【讨论】:

  • 感谢@martin honnen,但不幸的是,由于其他依赖,我目前无法使用 xslt 3。您知道任何 2.0 版本的解决方案吗?
  • @Sudesh,只要你有一个可以访问的网络服务并且它为你提供了一个你可以处理的格式,你是想使用 XSLT 2 还是 3 并不重要,这是我第一次用谷歌搜索返回 JSON,因此我使用 XSLT/XPath 3 功能来处理该 JSON,但我认为您可以找到另一个返回 XML 的服务,您可以使用 doc 函数在 XSLT/XPath 2 中读取,然后在返回的 XML 具有 XPath 的名称(在 XSLT 中使用例如 xsl:value-of select="doc(concat('http://example.com/country/', .))//name"/&gt; 。但您自己搜索这样的服务。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-12-16
  • 2014-02-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-01-28
相关资源
最近更新 更多