2016-05-04 9 views
2

Ich habe den folgenden Code von einigen XQuery angepasst. Wenn ich es jedoch ausführe, fügt es das Dokument nur in Sammlung B, nicht Auflistungen AundB als das entsprechende XQuery ein.XQuery-Sequenz entspricht in MarkLogic Server-Side JavaScript

declareUpdate(); 
xdmp.documentInsert(
    'mydoc.xml', 
    fn.head(xdmp.unquote(`<mydoc/>`)), 
    xdmp.defaultPermissions(), 
    ('A', 'B') 
); 

Antwort

3

Das Problem ist die ('A', 'B'). In XQuery, das eine Sequenz von zwei Strings darstellt. In JavaScript wird dies als zwei Anweisungen interpretiert und gibt das Ergebnis der letzten Anweisung zurück, in diesem Fall 'B'. Daher ist die Syntax gültig - weshalb es keinen Fehler gibt -, aber die Absicht ist anders. Im Allgemeinen entspricht das Äquivalent einer XQuery-Sequenz in JavaScript einem Array. So oberhalb der Code sollte

declareUpdate(); 
xdmp.documentInsert(
    'mydoc.xml', 
    fn.head(xdmp.unquote(`<mydoc/>`)), 
    xdmp.defaultPermissions(), 
    ['A', 'B'] 
); 

Beachten Sie die eckigen Klammern auf ['A', 'B'] sein. Dies ist etwas, auf das beim Kopieren von XQuery nach JavaScript geachtet werden muss.