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

Reply via email to