2009-04-08 11 views
2

Ich habe eine Funktion, die einen Konstruktor enthält:XQuery: wie man zwei Konstruktoren im Gegenzug verketten?

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

Ich verwende die Funktion im Gegenzug von "FLWOR":

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

Dies funktioniert.

Jetzt möchte ich zwei Konstrukten verketten wie diese

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

Das Pluszeichen natürlich nicht stimmt. Was sollte ich stattdessen verwenden?

Antwort

4

Ich nehme an, Sie zwei Knoten für jeden $ val, zurückkehren wollen, in dem Fall, dass Sie die , Operator verwenden möchten, etwa so:

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

Die zusätzlichen Klammern erforderlich sind, oder Sie wird versuchen, local:Construct(data($val/id2)) auf das Ergebnis der FLWOR zu verketten, was zu einem Fehler "undefinierte Variable" führen würde.

+0

Vielen Dank. Das ist genau das, was ich brauche. – danatel

Verwandte Themen