Marklogic XDMP-ARGTYPE:(错误:XPTY0004)arg0不是xs:anyAtomicType类型?

Marklogic XDMP-ARGTYPE:(错误:XPTY0004)arg0不是xs:anyAtomicType类型?,marklogic,Marklogic,我得到一个错误: XDMP-ARGTYPE:(err:XPTY0004)local:getrole(xs:unsignedLong($perm/sec:role id))| |“=”| | xs:string($perm/sec:capability)——arg0不是xs:anyAtomicType类型吗 我不知道怎么了。我正在尝试获取每个用户的权限列表。结果应该是userA和角色列表,userB和角色列表 let $uris := cts:uris( (),

我得到一个错误:

XDMP-ARGTYPE:(err:XPTY0004)local:getrole(xs:unsignedLong($perm/sec:role id))| |“=”| | xs:string($perm/sec:capability)——arg0不是xs:anyAtomicType类型吗

我不知道怎么了。我正在尝试获取每个用户的权限列表。结果应该是userA和角色列表,userB和角色列表

let $uris := cts:uris(
                  (),
                  (),
                  cts:and-query(
                      cts:collection-query("/users")
                  )
        )
return

    (:loop for each user & assign permission to variable:)
for $user in $uris
let $perm := xdmp:document-get-permissions(($user))

return
<info>

 <user>{$user}</user>
  <roles>{(local:getrole(xs:unsignedLong($perm/sec:role-id)) || "=" || 
  xs:string($perm/sec:capability))}</roles>
</info>
let$uris:=cts:uris(
(),
(),
cts:和查询(
cts:集合查询(“/users”)
)
)
返回
(:为每个用户循环并将权限分配给变量:)
对于$URI中的$user
让$perm:=xdmp:document获得权限(($user))
返回
{$user}
{(local:getrole(xs:unsignedLong($perm/sec:role id))| |“=”| |
xs:string($perm/sec:capability))}

最有可能的是
local:getrole(xs:unsignedLong($perm/sec:role id)
返回多个值,这是尝试使用
|
运算符压缩序列时出现的错误

由于用户可以(而且很可能会)拥有多个权限,因此您也需要循环使用这些权限

for $user in $uris
for $perm in xdmp:document-get-permissions(($user))
...