2016-04-08 48 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'表示文档没有管理。有没有解决这个问题的方法? –