Even though I dont understand it I gave it a shot and ran this xquery on
an existing document "build.xml" and get this exception:
My *guess* is that the delete and insert are not co-existing happily.
com.marklogic.xcc.exceptions.XQueryException: XDMP-CONFLICTINGUPDATES:
xdmp:document-insert("build.xml", doc("build.xml"), (), (), 0) --
Conflicting updates xdmp:document-insert("build.xml", doc("build.xml"),
(), (), 0) and xdmp:document-delete("build.xml")
in /eval, on line 10
expr: xdmp:document-insert("build.xml", doc("build.xml"), (), (), 0),
in local:document-rename("build.xml")
in /eval, on line 22
expr: xdmp:document-insert("build.xml", doc("build.xml"), (), (), 0)
From: [email protected]
[mailto:[email protected]] On Behalf Of Lee, David
Sent: Sunday, November 08, 2009 10:57 AM
To: [email protected]
Subject: [MarkLogic Dev General] Renaming Documents - question on
example
I would like to write a generic rename document function for MarkLogic.
I found this reference :
http://xqzone.marklogic.com/pipermail/general/2009-January/002297.html
But I am confused about it. Here's the suggested function:
------------
declare function local:document-rename($uri as xs:string)
as empty-sequence()
{
xdmp:document-delete($uri),
let $permissions := xdmp:document-get-permissions($uri)
let $collections := xdmp:document-get-collections($uri)
let $quality := xdmp:document-get-quality($uri)
return xdmp:document-insert(
$uri, doc($uri),
if ($permissions) then $permissions else
xdmp:default-permissions(),
if ($collections) then $collections else
xdmp:default-collections(),
$quality
),
let $prop-ns := namespace-uri(<prop:properties/>)
let $properties :=
xdmp:document-properties($uri)/node()
[ namespace-uri(.) ne $prop-ns ]
return xdmp:document-set-properties($uri, $properties)
};
What confuses me ..
1) it takes 1 arguement, which seems to be used as both the source
and target
2) The document is deleted, then referenced 5 lines later - how is
this so ? ( maybe this is because the xdmp:document-delete() doesnt
operate until the function completes ?
3) It appears that the document is re-inserted back into its same
name ...
I *must* be missing something fundimental here, but I dont see how to
pass in both the old name and the new name.
something like :
local:document-rename( "old.xml" , "new.xml" );
----------------------------------------
David A. Lee
Senior Principal Software Engineer
Epocrates, Inc.
[email protected]
812-482-5224
_______________________________________________
General mailing list
[email protected]
http://xqzone.com/mailman/listinfo/general