XQuery 선택 및 필터링
XML 예제 문서
아래의 예제에서 이 "books.xml" 문서(위 장에서 사용한 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>