최신 웹 개발 튜토리얼
 

XQuery를 선택 및 필터링


는 XML 예제 문서

우리는 사용합니다 "books.xml" 아래의 예에서 문서 (same XML file as in the previous chapters) .

보기 "books.xml" 브라우저에서 파일을 .


선택 및 필터링 요소

우리가 이전 장에서 보았 듯이, 우리는 선택하고 두 경로 식 또는 FLWOR 식 요소를 필터링합니다.

다음 FLWOR 식 봐 :

for $x in doc("books.xml")/bookstore/book
where $x/price>30
order by $x/title
return $x/title
  • 대한 - (optional) 식에 의해 반환 된 각 항목에 변수를 결합
  • 하자 - (optional)
  • 어디 - (optional) 조건을 지정
  • 에 의해 순서는 - (optional) 결과의 정렬 순서를 지정합니다
  • 반환 - 결과에서 무엇을 반환 지정

제의

절에 대한 표현에 의해 반환 된 각 항목에 변수를 바인드합니다. 반복의 절 결과의. 같은 FLWOR 식의 조항에 대해 여러있을 수 있습니다.

루프 절을위한에서 특정 횟수를하려면 사용할 수 있습니다 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 $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>

반환 조항

반환 절은 반환되는 지정합니다.

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>