Мне нужно скопировать всю папку проекта на сервер MarkLogic, и вместо того, чтобы делать это вручную, я решил сделать это с помощью рекурсивной функции, но это становится худшей идеей, которая у меня когда-либо была. У меня проблемы с транзакциями и синтаксисом, но, будучи новичком, я не нахожу правильного способа решить эту проблему. Вот мой код, спасибо за помощь!
import module namespace dls = "http://marklogic.com/xdmp/dls" at "/MarkLogic/dls.xqy";
declare option xdmp:set-transaction-mode "update";
declare function local:recursive-copy($filesystem as xs:string, $uri as xs:string)
{
for $e in xdmp:filesystem-directory($filesystem)/dir:entry
return
if($e/dir:type/text() = "file")
then dls:document-insert-and-manage($e/dir:filename, fn:false(), $e/dir:pathname)
else
(
xdmp:directory-create(concat(concat($uri, data($e/dir:filename)), "/")),
local:recursive-copy($e/dir:pathname, $uri)
)
};
let $filesystemfolder := 'C:\Users\WB523152\Downloads\expath-ml-console-0.4.0\src'
let $uri := "/expath_console/"
return local:recursive-copy($filesystemfolder, $uri)