У меня есть входной xml, как показано ниже
<node>
<id>1234</id>
<value1>DoNoChange</value1>
<value2></value2>
<value3></value3>
</node>
Теперь я бы использовал XSL для преобразования вышеуказанного XML в ниже одного
<node>
<id>1234</id>
<value1>DoNoChange</value1>
<value2>NewValue2</value2>
<value2>NewValue3</value2>
</node>
Какие NewValue2 и NewValue3 являются ответомсодержимое от вызовов API, таких как http://example.com/api/getDataByID/1234
, которые будут возвращать ответ как
<data>
<value2>NewValue2</value2>
<value3>NewValue3</value3>
<data>
Не могли бы вы посоветовать мне, как можно построить для него XSL?
Что я пробовалпока
<xsl:template match="node()|@*">
<xsl:copy>
<xsl:apply-templates select="node()|@*"/>
</xsl:copy>
</xsl:template>
<xsl:param name="code" select="1234"/>
<xsl:variable name="endpoint" as="xs:string" select="'http://example.com/api/getDataByID/1'"/>
<!-- the http request element -->
<xsl:variable name="request">
<http-request method="get" mime-type="application/xml" content-type="application/xml">
</http-request>
</xsl:variable>
<xsl:template match="node/id">
<xsl:variable name="rest_response" select="ex:httpSend($request, $endpoint)"/>
<id><xsl:value-of select="$rest_response/data"/></id>
</xsl:template>
</xsl:stylesheet>
Логика, которую я пытаюсь сделать, это
- Когда я вижу совпадение узла / id
- Я буду вызывать API, используя «id» в качестве параметра для Rest API (метод Get) (Примечание: в настоящее время я не знаю, как использовать id в качестве param, я до сих пор жестко запрограммирован)
- Захватите ответ API в переменную. Заполните переменные данными в таких полях, как «value2», value3 »(Примечание: это я не знаю, как это сделать)
Спасибо,