XQuery 선택 및 필터링

XML 예제 문서

아래의 예제에서 이 "books.xml" 문서(위 장에서 사용한 XML 파일과 동일)를 계속 사용하겠습니다.

브라우저에서 "books.xml" 파일을 확인하세요

요소 선택 및 필터링

이전 장에서 본 것처럼, 우리는 요소를 선택하고 필터링하기 위해 경로 표현식이나 FLWOR 표현식을 사용합니다.

아래의 FLWOR 표현식을 참조하세요:

for $x in doc("books.xml")/bookstore/book
where $x/price>30
order by $x/title
return $x/title
for
( 선택 사항 ) in 표현식이 반환하는 각 항목에 변수를 바인딩합니다
let
( 선택 사항 )
where
( 선택 사항 ) 조건을 설정합니다
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 문에서도 마찬가지입니다여러 in 표현식을 허용합니다각각의 in 표현식을 콤마로 구분하세요:

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 문

order by 문은 결과의 정렬 순서를 정의합니다. 여기서는 category와 title에 따라 결과를 정렬할 것입니다:

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 문:

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>