Как читать данные из файла с помощью XSLT в IBM API Connect

Я работаю над созданием REST API в IBM API connect. наше требование состоит в том, чтобы получить URL-адрес серверной части из файла свойств, который присутствует на сервере шлюза datapower, а затем вызвать внутреннюю службу в API.

В сборке API я написал XSLT код для открытия файла и чтения данных из файла, но xslt возвращает пустой ответ.

XSLT Код:

<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0" 
     xmlns:xsl="http://www.w3.org/1999/XSL/Transform" 
     xmlns:dp="http://www.datapower.com/extensions" 
     xmlns:func="http://exslt.org/functions" 
     xmlns:apim="http://www.ibm.com/apimanagement"
     extension-element-prefixes="dp func apim"
     exclude-result-prefixes="dp func apim">

     <!-- Cotains the APIM functions -->
      <xsl:import href="local:///isp/policy/apim.custom.xsl"/>

                        <xsl:template match="/">
                        <xsl:variable name="FileContent">
                        <dp:url-open target="'https://localhost:9090/dp'" response="xml" data-type="filename">local:///policy/propertyfiles/URLs.xml
                        </dp:url-open>
                        </xsl:variable>
                        <xsl:variable name="policy-props" select="apim:policyProperties()"/>
                         <xsl:variable name="catalog" select="apim:getContext('env.path')"/>
                              <outputXml>
                              <data><xsl:copy-of select="$FileContent" /></data>
                              <catalog><xsl:value-of select="$catalog" /></catalog>
                              <xsl:for-each select="$FileContent/catalogs/catalog">
                                <xsl:variable name="ReferencedID" select="@name"/>
                                <xsl:choose>
                                  <xsl:when test="$ReferencedID = $catalog">
                                  <backend_url><xsl:value-of select="$FileContent/response/catalogs/catalog/backend_url" /></backend_url>
                                  </xsl:when>
                                </xsl:choose>
                              </xsl:for-each>
                            </outputXml>
                        </xsl:template>
                      </xsl:stylesheet>

Я ожидаю увидеть данные из файла в ответе xslt. Но я вижу ответ ниже, в котором отсутствуют данные из файла.

Тело:

    <?xml version="1.0" encoding="UTF-8"?>
    <outputXml>
     <data/>
     <catalog>sb</catalog>
  </outputXml>

person Sam    schedule 29.08.2019    source источник
comment
Какую версию APIc вы используете? 2018.x или 5.x?   -  person Rohit Goyal    schedule 22.01.2020


Ответы (1)


Либо используйте dp:url-open, либо, возможно, document() функцию.

Другой вариант - добавить действие GWS для чтения файла и установить его в переменной контекста.

person Anders    schedule 30.08.2019
comment
Я пробовал использовать dp: url-open, но не уверен, читает ли он файл, поскольку вижу пустой ответ. не могли бы вы предоставить дополнительную информацию о том, как добавить действие GWS. Я новичок в XSLT и gatewayscript. - person Sam; 30.08.2019