2014-11-17 3 views
0

BaseX가 내 중첩 쿼리에 대해 불평하고 있습니다. 첫 번째 쿼리 에서처럼 여러 줄을 반환 할 수없는 이유를 이해할 수 없습니다. 오류는 "예상 됨"이라고 말했으며 ">"은 >이 트립 중임을 나타냅니다. }이 ID에 대 한 닫기 대괄호 뒤에있는 경우 제대로 작동하지만 분명히 원하는 것은 아닙니다. 다음 쿼리는 다음과 같습니다중첩 된 XQuery에서 BaseX가 여러 요소를 반환하도록하려면 어떻게해야합니까?

당신이 return 여러 항목을 원하는 경우
for $u in doc("export.xml")/database/USERS/tuple 
    return 
    <user> 
    <login>{$u/USERNAME/text()}</login> 
    <email></email> 
    <name></name> 
    <affiliation></affiliation> 
    <friend></friend> 
    <trip> 
     {for $t in doc("export.xml")/database/TRIPS/tuple 
     where $t/ADMIN/text() = $u/USERNAME/text() 
     return 
     <id> {$t/ID/text()} </id> 
     <name> {$t/NAME/text()} </name>  (: Error is here with <name> :) 
     <feature> {$t/FEATURE/text()} </feature> 
     <privacyFlag> {$t/PRIVACY/text() </privacyFlag>) 
     } 
    </trip> 
</user> 

답변

3

, 당신은 순서 ($item1, $item2, ..., $itemnN)에서 그들을 캡슐화 할 필요가있다. 귀하의 경우 :

for $t in doc("export.xml")/database/TRIPS/tuple 
where $t/ADMIN/text() = $u/USERNAME/text() 
return (
    <id> {$t/ID/text()} </id>, 
    <name> {$t/NAME/text()} </name>, 
    <feature> {$t/FEATURE/text()} </feature>, 
    <privacyFlag> {$t/PRIVACY/text() </privacyFlag> 
) 

그러나 이것이 예상 한대로 수행되는지 또는 실제로 여행 당 하나의 요소 세트를 만들고 싶은지 여부는 확실하지 않습니다.

for $t in doc("export.xml")/database/TRIPS/tuple 
where $t/ADMIN/text() = $u/USERNAME/text() 
return 
    <trip> 
    <id> {$t/ID/text()} </id> 
    <name> {$t/NAME/text()} </name> 
    <feature> {$t/FEATURE/text()} </feature> 
    <privacyFlag> {$t/PRIVACY/text() </privacyFlag> 
    </trip> 
: 그렇다면, 당신은 (이 여기에, 외부 FLWOR 루프의 경우 년대 <user/> 요소가 하나의 요소로 캡슐화에도 효과가있을 것이다) 또한 result에 대해 하나의 여행 요소가 줄과 시퀀스를 반환 할 필요가 없습니다