xslt — как преобразовать код iso Alpha 2 в название страны

#xslt #xslt-2.0

Вопрос:

У меня есть xml-файл с двумя символами альфа-кода, которые необходимо преобразовать в полное название страны. Например, DE должна стать Германией. Я понимаю, что шаблоны xslt можно использовать для сохранения списка в xslt для извлечения соответствующих имен, однако я не доволен этим дизайном и ищу функцию xslt (или что-то подобное), которая позволит избежать любого дальнейшего обслуживания отображения. пожалуйста, дайте мне знать ваши мысли по этому поводу. Спасибо.

Комментарии:

1. Вы можете поместить список сопоставлений в отдельный XML — документ и искать оттуда.

2. к сожалению, я не могу добавить автономный xml на сервер, поэтому я ищу что-то вроде rest api. спасибо за предложение.

Ответ №1:

Возможно, вызовите веб-службу, например, с помощью XSLT 3 вы можете обработать JSON, возвращенный из большинства API REST

   <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>
 

Комментарии:

1. Спасибо @martin honnen, но, к сожалению, на данный момент я не могу использовать xslt 3 из-за другой зависимости. Знаете ли вы о какой-либо версии решения 2.0?

2. @Судеш, если вы хотите использовать XSLT 2 или 3 действительно не имеет значения, пока у вас есть веб-сервис, вы можете получить доступ и это дает вам формате, вы можете процесса, сначала я загуглила возвращает JSON, поэтому я использовал код XSLT/XPath на 3 характеристика для обработки, что JSON, но я думаю, что вы можете найти другую службу, которая возвращает XML, вы можете прочитать в XSLT/XPath на 2 с doc функцией, а затем выберите атрибут или элемент в возвращенном XML, который имеет название с XPath (и в XSLT, например xsl:value-of select="doc(concat('http://example.com/country/', .))//name"/> . Но ищите такую услугу сами.