преобразовать пару тегов значения ключа в <key>значение </key> в Oracle облаке интеграции - PullRequest
0 голосов
/ 25 февраля 2020

у меня есть xml полезная нагрузка, которая отправляется в Oracle облако интеграции со следующим форматом

<keyName>key1</keyName>
<keyValue>value1</keyValue>
<keyName>key2</keyName>
<keyValue>value2</keyValue>
.
.

я хочу преобразовать его в этот формат с выражением xsl

в следующее:

<key1>value1</key1>
<key2>value2</key2>
<key3>value3</key3>

как этого добиться?

1 Ответ

0 голосов
/ 25 февраля 2020

Вы можете справиться с этим, используя following-sibling:

<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:xs="http://www.w3.org/2001/XMLSchema" exclude-result-prefixes="#all" version="2.0">

    <xsl:strip-space elements="*"/>

    <xsl:output method="xml" indent="yes"/>

    <xsl:template match="root">
        <root>
            <xsl:apply-templates select="@* | node()"/>
        </root>
    </xsl:template>

    <xsl:template match="keyName">
        <xsl:element name="{.}">
            <xsl:value-of select="following-sibling::node()[self::keyValue][1]"/>
        </xsl:element>
    </xsl:template>

    <xsl:template match="keyValue"/>

</xsl:stylesheet>

Ссылка: https://xsltfiddle.liberty-development.net/6rexjik

...