XPath как строковая переменная / свойство - PullRequest
0 голосов
/ 30 января 2019

Я получаю XPath из базы данных (через DSS), и мне нужно применить его к телу.Это как-то возможно?

Для примера, скажем, у меня есть этот XML-запрос

<custom>
    <id>24</id>
    <text>Some Text</text>
    <firstOccurId>123456</firstOccurId>
    <secondOccurId>654321</secondOccurId>
</custom>

Я беру ID (24) и вызываю шаблон, который вернет

<replacements>
    <row>
        <value>ABCDEFG</value>
        <xpath>/*/custom/firstOccurId</xpath>
    </row>
    <row>
        <value>GFEDCDBA</value>
        <xpath>/*/custom/secondOccurId</xpath>
    </row>
</replacements>

теперь мне нужно применить xpath для запроса и изменения его значения, поэтому преобразованное тело запроса выглядит следующим образом

<custom>
    <id>24</id>
    <text>Some Text</text>
    <firstOccurId>ABCDEFG</firstOccurId>
    <secondOccurId>GFEDCDBA</secondOccurId>
</custom>

Я попробовал оба метода define () и поместил строку XPath в {{}} вВызовите шаблон посредника, но оба безуспешно.

1 Ответ

0 голосов
/ 01 февраля 2019

evaluate() - правильный ответ.Чтобы быть более конкретным, для этого примера мне нужно сохранить custom запрос в свойстве, получить replacements, пройти через них и внутри этого цикла мне нужно сохранить полный xpath в свойстве как fn:concat('$body', //el:row/el:xpath, '/text()'), обогатить тело исходной полезной нагрузкой иприменить сохраненный XPath как evaluate()

...