2014-07-15 3 views
1

XQuery에서이 오류를 해결하는 방법. XML 결과에서 중복되지 않고 데이터를 구분해야합니다. for 문에서 뚜렷한 - 값을 문서 앞에 추가하려고 시도했지만이 오류가 묘사되었습니다. 고유 값 오류를 해결하는 방법

for $sv1 in distinct-values(doc('tc.xml')//term/year) 
let $sv2 := doc('tc.xml')//term[year= $sv1] 
let $sv3 := doc('tc.xml')//student[idStudent= $sv1/idStudent](:HERE IS THE ERROR LINE:) 
let $sv4 := doc('tc.xml')//program[idStudent= $sv3/idStudent] 
    return 
    <Statistics> 
    {$sv1 } 
    <Count_Student>{count($sv2)}</Count_Student> 
    <a50_60>{count(doc('tc.xml')/mydb//program[doc('tc.xml')/mydb//term/year =$sv1][avg>= 50 and avg < 60])}</a50_60> 
</Statistics> 

사전에 감사합니다 :
Engine name: Saxon-PE XQuery 9.5.1.3 
Severity: fatal 
Description: XPTY0019: Required item type of first operand of '/' is node(); supplied  value has item type xs:anyAtomicType 
     Start location: 23:0 
     URL: http://www.w3.org/TR/xpath20/#ERRXPTY0019 

는 코드입니다.

답변

1

distinct-values()은 입력을 분무합니다. 이는 $sv1이 요소가 아니기 때문에 $sv1/idStudent이 작동하지 않음을 의미합니다. 대신 줄을 $sv1 사용하여 오류가 나는 $sv2 사용해야한다고 생각합니다.

+0

@Amal이 문제가 해결되면 대답을 수락 할 수 있습니다. 방법을 모른다면 [둘러보기] (http://stackoverflow.com/tour)를 방문하십시오. –