2016-04-08 7 views
3

Ich habe versucht, die unten erwähnte xquery. Wenn das Dokument nicht verwaltet wird, möchte ich das Dokument mithilfe einer DLS-Abfrage verwalten, andernfalls möchte ich das Dokument auschecken.MarkLogic 8 - XQuery mit Dokument verwalten und Kasse

xquery version "1.0-ml"; 
import module namespace dls = "http://marklogic.com/xdmp/dls" at "/MarkLogic/dls.xqy"; 

let $uri :="/root/189966_01.xml" 

let $i := dls:document-is-managed($uri) 

return 
    if ($i = fn:false()) 
    then 

    dls:document-manage($uri, fn:false(), "Baz is now a managed document") 

    (: dls:document-checkout($uri, fn:true(), "updating doc", 3600) :) 

    else if ($i = fn:true()) 
    then 

     dls:document-checkout($uri, fn:true(), "updating doc", 3600) 

    else 

    "No action" 

Bitte korrigieren Sie mich, wenn etwas auf meiner Seite falsch ist.

Antwort

1

Die Xquery sieht gut aus. Nur eine Neustrukturierung der oben genannten Abfrage -

xquery version "1.0-ml"; 
import module namespace dls = "http://marklogic.com/xdmp/dls" at "/MarkLogic/dls.xqy";  
let $uri :="/root/189966_01.xml"  
let $i := dls:document-is-managed($uri)  
return 
    if ($i = fn:false()) then  
     dls:document-manage($uri, fn:false(), "Baz is now a managed document")  
    else  
     if ($i = fn:true()) then  
      dls:document-checkout($uri, fn:true(), "updating doc", 3600)  
    else  
     () 
+0

Wie kann ich das Dokument nach der Verwaltung in der gleichen Transaktion auschecken. Im obigen Beispiel habe ich versucht, 'dls: document-checkout' nach 'dls: document-manage' aufzurufen, aber ich bekomme einen Fehler als 'DLS-UNMANAGED', was bedeutet, dass das Dokument nicht verwaltet wird. Gibt es dafür eine Lösung? –