Hi Danny,

it works with plain query. usually in my function I have some variables and I need to use these variables for eval. I tried the following and I couldn't make it work. Can you help me?

xquery version "1.0-ml";

declare function local:mytest()
{
let $c1 := "http://py";
let $c2 := "http://mytest";
return
(
xdmp:eval('xdmp:document-insert("/aa.xml", <foo/>)')
,
xdmp:eval('xquery version "1.0-ml";
           declare variable $e1 as external;
           declare variable $e2 as external;
           xdmp:document-set-collections( "/aa.xml", ($e1))
           ,
           xdmp:document-get-collections("/aa.xml")
           ,
           xdmp:document-add-collections( "/aa.xml", ($e2))'
          ,
          (xs:QName("e1"), $c1, xs:QName("e2"), $c2)

         )
,
xdmp:eval('xdmp:document-get-collections("/aa.xml")')
)
};

local:mytest()





On Jul 6, 2010, at 5:18 PM, Danny Sokolsky wrote:

You need to make the updates happen in a separate transaction and then make the get-collections happen in a separate transaction that has a timestamp later than the update. One way to do that is by making them each do evals. SOmething like:

xquery version "1.0-ml";
declare function local:mytest()
{
(
xdmp:eval('xdmp:document-insert("/aa.xml", <foo/>)'),
xdmp:eval('xdmp:document-set-collections( "/aa.xml", ("http://py";))
,
xdmp:document-get-collections("/aa.xml")
,
xdmp:document-add-collections( "/aa.xml", ("http://mytest";))')
,
xdmp:eval('xdmp:document-get-collections("/aa.xml")')
)
};

local:mytest()

-Danny

From: [email protected] [mailto:[email protected] ] On Behalf Of helen chen
Sent: Tuesday, July 06, 2010 2:03 PM
To: General Mark Logic Developer Discussion
Subject: [MarkLogic Dev General] how to do multi-transaction in a function

I want to do an update to a document and then see the update immediately. I did a test like the following: I add a collection to a document, then try to get it, within the same transaction I cannot see the new collection. That means I have to be in the seperate transaction.

declare function local:mytest()
{
(
xdmp:document-set-collections( "/aa.xml", ("http://py";))
,
xdmp:document-get-collections("/aa.xml")
,
xdmp:document-add-collections( "/aa.xml", ("http://mytest";))
,
xdmp:document-get-collections("/aa.xml")
)
};

local:mytest()


How can I make the last line xdmp:document-get-collections("/ aa.xml") as seperate transaction so I can see the change?

Thanks, Helen
_______________________________________________
General mailing list
[email protected]
http://developer.marklogic.com/mailman/listinfo/general

_______________________________________________
General mailing list
[email protected]
http://developer.marklogic.com/mailman/listinfo/general

Reply via email to