The only way? Actually no, you can also convert sequences to an element
tree, but map:map is usually most convenient as it preserves types etc...

Grtz

> -----Oorspronkelijk bericht-----
> Van: Geert Josten [mailto:[email protected]]
> Verzonden: woensdag 24 april 2013 7:37
> Aan: MarkLogic Developer Discussion
> Onderwerp: RE: [MarkLogic Dev General] How to pass complex type into
> xdmp:eval?
>
> 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

Reply via email to