зацикливание xml с помощью xquery - PullRequest
0 голосов
/ 12 декабря 2018

У меня есть требование зацикливаться на xml и заменять строковые заполнители на значения из файла xml,

<ns0:parameters>
        <ns0:parameter>
            <ns1:paramName>P_1</ns1:paramName>
            <ns1:paramValue>paramValue_1</ns1:paramValue>
        </ns0:parameter>
        <ns0:parameter>
            <ns1:paramName>P_2</ns1:paramName>
            <ns1:paramValue>paramValue_2</ns1:paramValue>
        </ns0:parameter>
    </ns0:parameters>

текст будет иметь следующий вид

Welcome to P_1, this is your first P_2

, поэтомумы должны обновить заполнители в тексте (P_1 и P_2), указав их значения из xml, поэтому как мы можем это сделать, используя XQuery

Спасибо

Ответы [ 2 ]

0 голосов
/ 04 января 2019

Для XQUERY 1.0 используйте цикл, чтобы найти позицию массива для

{Для $ параметров $ counter в $ body / ns0: параметр

    Welcome to  $parameters/ns0:parameter[1][data(ns1:paramName)] this is your first 
    $parameters/ns0:parameter[$counter + 1][data(ns1:paramName)]P_2 

}

Пожалуйста, можете проверить

Используйте переменную-счетчик, чтобы найти последовательность цикла.

0 голосов
/ 12 декабря 2018

Используйте функцию analyze-string(), чтобы разбить текст на части, которые соответствуют заполнителю P_n, и части, которые не соответствуют;затем обработайте результат функции следующим образом:

  • Для несоответствующего фрагмента текста скопируйте его в вывод
  • Для заполнителя $p замените его на //ns0:parameter[ns1:paramName=$p]/ns1:paramValue

Для функции analyze-string() требуется XQuery 3.0.С 1.0 это будет немного сложнее

...