2016-04-08 83 views
3

我試過了下面提到的xquery。如果文檔不受管理,我想使用DLS查詢管理文檔,否則我想簽出文檔。MarkLogic 8 - 使用文檔管理和結帳的XQuery

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" 

如果我身邊有什麼問題,請糾正我。

回答

1

xquery看起來不錯。只是上述查詢的重組 -

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

如何在同一個事務中管理它之後簽出文檔。 在上面的例子中,我嘗試在'dls:document-manage'後面調用'dls:document-checkout',但是我得到一個錯誤,因爲'DLS-UNMANAGED'表示文檔沒有管理。有沒有解決這個問題的方法? –