Установите постоянное значение с помощью XQuery - PullRequest
0 голосов
/ 07 декабря 2010

Я пытался присвоить значения элементам входящего xml (из очереди), используя xquery. Входящий xml имеет форму

<header><a></a><b></b><c></c></header>

Мне нужно установить их с постоянными значениями для целевой системы:

<header><a>1</a><b>2</b><c>3</c></header>

Есть идеи?

1 Ответ

1 голос
/ 07 декабря 2010

Я не уверен, что полностью понимаю ваш вопрос, но я предполагаю, что вы хотите скопировать ввод и изменить некоторые элементы. Это проще всего сделать с помощью XSLT.

Чтобы сделать это в XQuery, вам нужна рекурсивная функция, которая просматривает каждый узел, модифицирует его при необходимости и копирует выходные данные. Из вашего описания я предполагаю, что ваши входные данные состоят только из узлов элементов, и поэтому это единственный случай, который я рассмотрел:

declare function local:apply($node as element())
{
  typeswitch ($node)
  case element(a) return <a>1</a>
  case element(b) return <b>2</b>
  case element(c) return <c>3</c>
  default return element {name($node)} {local:apply($node/*)}
}
...