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 표현식을 허용합니다문자열을 구분하기 위해 쉼표를 사용하십시오:
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 문은 결과에 대해 하나 이상의 조건을 설정합니다(.criteria)。
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="ko">일상 이탈리아</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="ko">일상 이탈리아</title> <title lang="en">Harry Potter</title> <title lang="en">XQuery Kick Start</title> <title lang="en">Learning XML</title>