Hi Lanz, I meant, what code did you use to check how many docs there are in "collection-last"? That should be done in a different transaction..
Kind regards, Geert > -----Original Message----- > From: [email protected] > [mailto:[email protected]] On Behalf Of Lanz > Sent: vrijdag 6 augustus 2010 16:51 > To: General Mark Logic Developer Discussion > Subject: Re: [MarkLogic Dev General] > xdmp:document-remove-collections not working > > Thanks for your answer, I will add log($e) in my code. > How I verify "collection-last" ? > I call a user defined function : > local:clean-collection() as empty-sequence() { for $doc in > fn:collection("collection-last") return > xdmp:document-remove-collections(fn:document-uri($doc), > ("collection-last")) > }; > just before deleting and recreating new document. > I never use a separate transaction. > > Lanz > > > On Fri, Aug 6, 2010 at 16:44, Geert Josten > <[email protected]> wrote: > > Hi Lanz, > > > > Be carefull with 'catch($e) { }', I recommend adding an > xdmp:log($e). You might be missing an important warning here. > > > > Can you also tell us exactly how you are verifying > "collection-last"? Make sure to check in a separate transaction. > > > > Kind regards, > > Geert > > > >> > > > > > > drs. G.P.H. (Geert) Josten > > Consultant > > > > Daidalos BV > > Hoekeindsehof 1-4 > > 2665 JZ Bleiswijk > > > > T +31 (0)10 850 1200 > > F +31 (0)10 850 1199 > > > > mailto:[email protected] > > http://www.daidalos.nl/ > > > > KvK 27164984 > > > > > > De informatie - verzonden in of met dit e-mailbericht - is > afkomstig van Daidalos BV en is uitsluitend bestemd voor de > geadresseerde. Indien u dit bericht onbedoeld hebt ontvangen, > verzoeken wij u het te verwijderen. Aan dit bericht kunnen > geen rechten worden ontleend. > > > >> From: [email protected] > >> [mailto:[email protected]] On Behalf Of Lanz > >> Sent: vrijdag 6 augustus 2010 16:20 > >> To: general > >> Subject: [MarkLogic Dev General] > >> xdmp:document-remove-collections not working > >> > >> Hi all, > >> > >> I have an issue with xdmp:document-remove-collections, the > way I use > >> this function does not work. > >> Here is my code explanation : > >> 1- I want to move XML documents from one input directory > to another > >> one (in reality, delete and recreate document) > >> 2 - with xdmp:document-insert I add some collections to the new > >> document, 3 collections related to the date and one other > which flags > >> the document as the last one ("collection-last") > >> 3- I need to keep only one document in the collection > >> ("collection-last") : each time I "move" a document (see > 1-) I remove > >> all document from ("collection-last") and then I set > >> ("collection-last") to the processed document. > >> > >> But it seems that I can't remove all documents from > >> ("collection-last"), there is no error but it does not > work at all : > >> all document keep this collection > >> Help is appreciated., Thanks ! > >> Lanz > >> > >> > >> Here is my code : > >> xquery version '1.0-ml'; > >> > >> declare function > >> local:clean-collection() as empty-sequence() { for $doc in > >> fn:collection("collection-last") return > >> xdmp:document-remove-collections(fn:document-uri($doc), > >> ("collection-last")) > >> }; > >> declare function > >> local:document-move($targetURI as xs:string, $sourceURI as > xs:string, > >> $myCollection as xs:string*) as empty-sequence() { > >> try { > >> local:clean-collection(), > >> xdmp:document-delete($sourceURI), > >> let $permissions := > xdmp:document-get-permissions($sourceURI) > >> let $collections := $myCollection > >> let $quality := xdmp:document-get-quality($sourceURI) > >> return > >> xdmp:document-insert( > >> $targetURI, > >> doc($sourceURI), > >> 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($sourceURI)/node() > >> [ namespace-uri(.) ne $prop-ns ] > >> return xdmp:document-set-properties($targetURI, > $properties) > >> } > >> catch($e) { > >> } > >> }; > >> > >> (:scan du repertoire d'entrée:) > >> for $doc in xdmp:directory("/data/items/input/") > >> > >> let $sourceURI := xdmp:node-uri($doc) > >> let $myDate := doc($sourceURI)/Items/Item[1]/ExportDate > >> let $myYeardate := fn:year-from-date(xs:date($myDate)) > >> let $targetDir := > >> fn:concat("/data/items/repository/",$myYeardate ,"/") > >> let $myShortDate := > >> fn:adjust-date-to-timezone(xs:date($myDate ), ()) > >> let $targetURI := fn:concat($targetDir,$myShortDate,".xml") > >> let $myCollection := ("collection-last", > >> fn:concat("collection-",$myShortDate),fn:concat("collection-", > >> fn:string-join(fn:tokenize(xs:string($myShortDate), > >> "-")[1 to > >> > 2],"-")),fn:concat("collection-",fn:tokenize(xs:string($myShortDate), > >> "-")[1])) > >> order by $myDate > >> return local:document-move($targetURI,$sourceURI,$myCollection) > >> _______________________________________________ > >> General mailing list > >> [email protected] > >> http://developer.marklogic.com/mailman/listinfo/general > >> > > _______________________________________________ > > General mailing list > > [email protected] > > http://developer.marklogic.com/mailman/listinfo/general > > > _______________________________________________ > General mailing list > [email protected] > http://developer.marklogic.com/mailman/listinfo/general > _______________________________________________ General mailing list [email protected] http://developer.marklogic.com/mailman/listinfo/general
