XQuery 선택 및 필터링
XML 예제 문서
아래 예제에서 "books.xml" 문서를 사용할 것입니다(이전 장에서와 동일한 XML 파일).
요소 선택 및 필터링
이전 장에서 보았듯이 Path 표현식이나 FLWOR 표현식을 사용하여 요소를 선택하고 필터링합니다.
다음 FLWOR 표현식을 보십시오.
for $x in doc("books.xml")/bookstore/book
where $x/price>30
order by $x/title
return $x/title
- for - (선택 사항) in 표현식에서 반환된 각 항목에 변수를 바인딩합니다.
- 하자 - (선택 사항)
- 여기서 -(선택 사항) 기준을 지정합니다.
- order by - (선택 사항) 결과의 정렬 순서를 지정합니다.
- return - 결과에서 무엇을 반환할지 지정
for 절
for 절은 in 표현식에서 반환된 각 항목에 변수를 바인딩합니다. for 절은 반복을 초래합니다. 동일한 FLWOR 표현식에 여러 개의 for 절이 있을 수 있습니다.
for 절에서 특정 횟수만큼 반복하려면 to 키워드를 사용할 수 있습니다.
for $x in (1 to 5)
return <test>{$x}</test>
결과:
<test>1</test>
<test>2</test>
<test>3</test>
<test>4</test>
<test>5</test>
at 키워드는 반복을 계산하는 데 사용할 수 있습니다 .
for $x at $i in doc("books.xml")/bookstore/book/title
return <book>{$i}. {data($x)}</book>
결과:
<book>1. Everyday Italian</book>
<book>2. Harry Potter</book>
<book>3. XQuery Kick Start</book>
<book>4. Learning XML</book>
for 절의 표현식에서 둘 이상도 허용됩니다. 식에서 쉼표를 사용하여 각각을 구분합니다.
for $x in (10,20), $y in (100,200)
return <test>x={$x} and y={$y}</test>
결과:
<test>x=10 and y=100</test>
<test>x=10 and y=200</test>
<test>x=20 and y=100</test>
<test>x=20 and y=200</test>
let 절
let 절은 변수 할당을 허용하고 동일한 표현식을 여러 번 반복하지 않습니다. let 절은 반복을 일으키지 않습니다.
let $x := (1 to 5)
return <test>{$x}</test>
결과:
<test>1 2 3 4 5</test>
Where 절
where 절은 결과에 대한 하나 이상의 기준을 지정하는 데 사용됩니다.
where $x/price>30 and $x/price<100
조항별 주문
order by 절은 결과의 정렬 순서를 지정하는 데 사용됩니다. 여기에서 카테고리 및 제목별로 결과를 정렬하려고 합니다.
for $x in doc("books.xml")/bookstore/book
order by $x/@category, $x/title
return $x/title
결과:
<title lang="en">Harry Potter</title>
<title lang="en">Everyday Italian</title>
<title lang="en">Learning XML</title>
<title lang="en">XQuery Kick Start</title>
반환 조항
return 절은 무엇을 반환할지 지정합니다.
for $x in doc("books.xml")/bookstore/book
return $x/title
결과:
<title lang="en">Everyday Italian</title>
<title lang="en">Harry Potter</title>
<title lang="en">XQuery Kick Start</title>
<title lang="en">Learning XML</title>