我有关于FLWOR加入的问题。以下是我的XML的外观概述。
<user>
<user-id>...</user-id>
<username>...</username>
<password>...</password>
<!-- By schema file, there could be unbounded role-ids -->
<role-id>...</role-id>
<role-id>...</role-id>
<role-id>...</role-id>
</user>
<role>
<role-id>...</role-id>
<name>...</name>
<!-- By schema file, there could be unbounded permission-ids -->
<permission-id>...</permission-id>
<permission-id>...</permission-id>
<permission-id>...</permission-id>
</role>
<permission>
<permission-id>...</permission-id>
<resource-id>...</resource-id>
<operation-id>...</operation-id>
</permission>
我有一个FLWOR表达式query,它应返回给定用户的一系列权限。它应该很简单,但我无法弄清楚为什么每次运行查询时都会得到一个空的ResourceSet。
for $i in collection("data/rbac/users")/user[user-id="..."]/role-id
for $j in collection("data/rbac/roles")/roles/role
for $k in collection("data/rbac/permissions")/permission
where $i = $j/role-id and exists($j/permission-id[. = $k/permission-id])
return $k
非常感谢任何建议。 谢谢,
伊戈尔
答案 0 :(得分:1)
您的XQuery似乎与您提供的数据不匹配。例如role-id
不是user
的孩子,也似乎没有roles
元素。给定提供的XML的此查询可能会返回一个空资源集。
答案 1 :(得分:0)
由于源XML数据的结构并不完全清楚,因此很难说清楚。但似乎存在一个小的不一致性 - 您的XQuery的第二行假设您的集合roles
中有一个名为data/rbac/roles
的节点。也许第二行应该看起来像
for $j in collection("data/rbac/roles")/role
?猜猜......