2012-05-24 2 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 표현식 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

원본 XML 데이터의 구조가 완전히 명확하지 않으므로 알기 어렵습니다. 하지만 XQuery의 두 번째 줄에는 data/rbac/roles 컬렉션에 노드 roles이 있다고 가정합니다. 아마 두 번째 줄은

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

같이해야합니까? 그냥 추측 ...

+0

나는 깜빡하고있다. ... 래퍼 주위에 .. 요소가 있으므로 역할에 액세스하려면 먼저 역할에 액세스해야합니다. 어쨌든, 노력에 감사드립니다! – Igor

1

귀하는 XQuery는 사용자가 제공 한 데이터와 일치하지 않는 것 같습니다. 예를 들어 role-iduser의 하위 항목이 아니며 roles 요소가없는 것으로 보입니다. 제공된 XML에서이 쿼리는 빈 리소스 세트를 반환합니다.