Hi all,

I have two questions about the dls functions in MarkLogic 4.2-7 (I tried
4.2-3 before, I encountered the same behavior):

1, The first one is the dls:document-insert-and-manage, it supports to add
the document into specify collections, but I found the version 1 document
has not been added into the collections, while the main document has been
added. Then I looked into the source code dls.xqy in MarkLogic install
folder/Modules/MarkLogic, starts from line 119, after calling the
dls-document-insert
to insert the main document, it calls the _document-manage function to add
the version document, there are two questions here:

a, the function document-insert-version will not be executed at line 1477,
because the transaction, the main document has not been committed, so the
fn:doc($uri) is empty. So I think this code is not necessary?

document-insert-version(
      $uri,fn:doc($uri), $annotation,
      $permissions, xdmp:document-get-collections($uri),
      xdmp:document-get-quality($uri), xdmp:document-forest($uri),fn:true())

b, it calls the function document-insert-version again at line 1437, but
also because the transaction, the xdmp:document-get-collections($uri) is
empty too, so that is why the version document has not been added into the
specify collections. I think we should pass the collections as parameter.

document-insert-version(
    $uri,$element,$annotation,$permissions,
    xdmp:document-get-collections($uri),xdmp:document-get-quality($uri),
    xdmp:document-forest($uri),fn:true())


2, The second one is the dls:document-checkout-update-checkin, it also
supports to add the updated document into specify collections, when I
wanted to update the document to another collection, I found the main
document keeps the old collections, while the version document has been
added into the new collections. Then I looked at the same dls.xqy, starts
from line 204, it calls the _document-update function at line 1383 to
update the document, but it uses the xdmp:document-get-collections($uri) to
get the OLD collections, that is why the updated main document keeps the
old collections. I think we should use the $collections, which is the new
collections.

return (
    dls-document-insert($uri,$doc,$previous-perms,
      xdmp:document-get-collections($uri),$quality,$forest-ids)


Can someone confirm these?

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

Reply via email to