XQuery: как соединить два конструктора взамен? - PullRequest
2 голосов
/ 08 апреля 2009

У меня есть функция, которая содержит конструктор:

declare function local:Construct ($id)
{
  <tag id="{$id}"/>
}

Я использую функцию взамен "FLWOR":

for $val in ...
...
return local:Construct(data($val/id))

Это работает.

Теперь я хочу объединить две конструкции, подобные этой

for $val in ...
...
return local:Construct(data($val/id1)) + local:Construct(data($val/id2))

Знак плюс, конечно, неверен. Что я должен использовать вместо этого?

1 Ответ

4 голосов
/ 08 апреля 2009

Я предполагаю, что вы хотите вернуть два узла для каждого $ val , и в этом случае вы хотите использовать оператор , , например:

for $val in ...
...
return (local:Construct(data($val/id1)), local:Construct(data($val/id2)))

Требуются дополнительные скобки, или вы будете пытаться объединить local:Construct(data($val/id2)) в результат FLWOR, что приведет к ошибке «неопределенная переменная».

...