2012-05-24 44 views
1


我有一個關於FLWOR連接的問題。以下是我的XML的外觀概述。使用FLWOR連接表格

<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表達式,查詢,它應該返回權限的序列給定用戶。它應該很簡單,但我無法弄清楚爲什麼每次運行查詢時都會得到一個空的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

很難說,因爲源XML數據的結構並不完全清楚。但似乎有一點不一致 - XQuery的第二行假設您的集合data/rbac/roles內部有一個名爲roles的節點。也許第二行應該是

for $j in collection("data/rbac/roles")/role

?只是猜...

+0

我忘了提。有一個 ...包裝 ..元素,因此要訪問角色,我必須首先訪問角色。無論如何,感謝努力! – Igor

1

你的XQuery似乎並不符合您所提供的數據。例如role-id不是user的孩子,也似乎沒有roles元素。給定所提供的XML的查詢可能會返回空資源集。