json:array will work as well as a single object to hold a sequence
Sent from my iPad (excuse the terseness) David A Lee [email protected] 812-630-7622 On Apr 23, 2013, at 10:44 PM, "Tim Finney" <[email protected]> wrote: > Thanks Geert! > > On 04/24/2013 01:36 PM, Geert Josten wrote: >> Hi Tim, >> >> Put your permissions into a map:map, or put all your args into it, and >> pass that through to the eval. That is the only safe way to pass through >> sequences.. >> >> Kind regards, >> Geert >> >>> -----Oorspronkelijk bericht----- >>> Van: [email protected] [mailto:general- >>> [email protected]] Namens Tim Finney >>> Verzonden: woensdag 24 april 2013 7:20 >>> Aan: MarkLogic Developer Discussion >>> Onderwerp: Re: [MarkLogic Dev General] How to pass complex type into >>> xdmp:eval? >>> >>> Mike, >>> >>> Sorry, I should have added that I might want to use options with >>> xdmp:eval. E.g. >>> >>> my:doc-perms-set($URI, $perms, $DB) { >>> let $query := ... >>> let $args := ... >>> let $options := <options xmlns="xdmp:eval"> >>> <database>{xdmp:database($DB)}</database> >>> </options> >>> return xdmp:eval($URI, $perms, $options) >>> }; >>> >>> Tim >>> >>> On 04/24/2013 01:13 PM, Michael Blakeley wrote: >>>> Why call eval? >>>> >>>> -- Mike >>>> >>>> On Apr 23, 2013, at 21:41, Tim Finney <[email protected]> wrote: >>>> >>>>> Hi Everyone, >>>>> >>>>> Say I have an amped function to set doc permissions. E.g. >>>>> >>>>> declare function my:document-set-permissions( >>>>> $URI as xs:string, >>>>> $permissions as element()* >>>>> ) as empty-sequence() { >>>>> try { >>>>> let $query := ' >>>>> declare variable $URI external; >>>>> declare variable $permissions external; >>>>> xdmp:document-set-permissions($URI, $permissions) >>>>> ' >>>>> let $args := ( >>>>> fn:QName("", "URI"), $URI, >>>>> fn:QName("", "permissions"), $permissions >>>>> ) >>>>> return xdmp:eval($query, $args) >>>>> } >>>>> catch ($e) { fn:error(xs:QName("e:fail"), "operation failed", $e) >> } >>>>> }; >>>>> >>>>> I call this like so: >>>>> >>>>> let $URI := "myURI" >>>>> let $permissions := ( >>>>> xdmp:permission("app-user", "read"), >>>>> xdmp:permission("app-user", "update") >>>>> ) >>>>> return my:document-set-permissions($URI, $permissions) >>>>> >>>>> However, I get this error which is caused by fn:data which is >> presumably >>>>> called by xdmp:eval. >>>>> >>>>> XDMP-NONMIXEDCOMPLEXCONT 1.0-ml Node has complex type with >>> non-mixed >>>>> complex content XDMP-NONMIXEDCOMPLEXCONT: >>> fn:data(<sec:permission >>> xmlns:sec="http://marklogic.com/xdmp/security"><sec:capability>update< >>> /sec:capability><sec:role-id>...</sec:permission>) >>>>> >>>>> Is there a way to pass in the permissions elements? >>>>> >>>>> Best, >>>>> >>>>> Tim Finney >>>>> _______________________________________________ >>>>> 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 > > _______________________________________________ > General mailing list > [email protected] > http://developer.marklogic.com/mailman/listinfo/general _______________________________________________ General mailing list [email protected] http://developer.marklogic.com/mailman/listinfo/general
