Hi Dave,

?

All of my logs are getting called including the one after the insert statement, 
I have pasted my code below.

I tried inserting without xdmp:eval statement as well, but it did not work out



xquery version "1.0-ml";

import module namespace cpf = "http://marklogic.com/cpf";
  at "/MarkLogic/cpf/cpf.xqy";


declare variable $cpf:document-uri as xs:string external;
declare variable $cpf:transition as node() external;

declare function local:insert-split-doc($split-doc as node(),$cpf:document-uri 
as xs:string, $content-id) {

 let $loggg := xdmp:log("Well! am inside")
 let $collections := ("ALL","CAMML_BOOK","CHAPTER_XML")
 let $document-status := 
xdmp:document-properties($cpf:document-uri)/*:properties/status/text()
 let $uri := if(fn:ends-with($cpf:document-uri,"package.xml"))
             then
                fn:concat(fn:tokenize($cpf:document-uri, 
"package.xml")[1],$content-id)
             else ()
 let $log := xdmp:log(("The doc is",$split-doc))
return if(fn:empty($uri))
       then
        xdmp:log("The uri is empty")
       else
        try{
            xdmp:eval('
            declare variable $split-doc as external;
            declare variable $uri as external;
            declare variable $collections as external;
            declare variable $document-status as external;
            xdmp:document-insert($uri,$split-doc,$collections)',
            
((xs:QName("split-doc"),$split-doc),(xs:QName("uri"),$uri),(xs:QName("collections"),$collections),(xs:QName("document-status"),$document-status)),
            <options xmlns="xdmp:eval">
                <database>{xdmp:database("content")}</database>
            </options>)
           }
        catch($Exception){$Exception}
};


if (cpf:check-transition($cpf:document-uri,$cpf:transition)) then try {
  let $doc := fn:doc( $cpf:document-uri )

  let $log := xdmp:log(("The metadata uri ",fn:base-uri($doc)))
  let $content := $doc/*:consignment/*:item//*:content
  let $insert := for $item at $pos in $content[1]
                 let $content-data-id := 
fn:concat($item/../fn:data(@sourcefile),"#",$item/fn:data(@id))
                 let $split-doc := <consignment>
                                        <content-meta>
                                            
{$doc/*:consignment/*:item/*:metadata}
                                        </content-meta>
                                        <content-data id='{$content-data-id}'>
                                            {$item}
                                        </content-data>
                                    </consignment>
                  return 
(local:insert-split-doc($split-doc,$cpf:document-uri,$item/../fn:data(@sourcefile)),
                      xdmp:log( "split content ran OK" )
                      ,xdmp:log(("Thats good",$content-data-id)))
return ($insert,cpf:success( $cpf:document-uri, $cpf:transition, () ))

}
catch ($e) {
  cpf:failure( $cpf:document-uri, $cpf:transition, $e, () )
}
else ()?

Thanks,
Diwakar N

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

Reply via email to