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

Reply via email to