XQuery-첫 번째 응용 프로그램
예
다음은 다양한 서적의 서점 레코드를 포함하는 샘플 XML 문서입니다.
books.xml
<?xml version="1.0" encoding="UTF-8"?>
<books>
<book category="JAVA">
<title lang="en">Learn Java in 24 Hours</title>
<author>Robert</author>
<year>2005</year>
<price>30.00</price>
</book>
<book category="DOTNET">
<title lang="en">Learn .Net in 24 hours</title>
<author>Peter</author>
<year>2011</year>
<price>70.50</price>
</book>
<book category="XML">
<title lang="en">Learn XQuery in 24 hours</title>
<author>Robert</author>
<author>Peter</author>
<year>2013</year>
<price>50.00</price>
</book>
<book category="XML">
<title lang="en">Learn XPath in 24 hours</title>
<author>Jay Ban</author>
<year>2010</year>
<price>16.50</price>
</book>
</books>
다음은 위의 XML 문서에서 실행할 쿼리 표현식이 포함 된 샘플 Xquery 문서입니다. 목적은 가격이 30보다 큰 XML 노드의 제목 요소를 가져 오는 것입니다.
books.xqy
for $x in doc("books.xml")/books/book where $x/price>30
return $x/title
결과
<title lang="en">Learn .Net in 24 hours</title>
<title lang="en">Learn XQuery in 24 hours</title>
결과 확인
결과를 확인하려면 books.xqy ( 환경 설정 장에서 제공) 의 내용을 위의 XQuery 표현식 으로 바꾸고 XQueryTester Java 프로그램을 실행하십시오.
XQuery 표현식
위의 XQuery 표현식의 각 부분을 이해합시다.
기능 사용
doc("books.xml")
doc ()는 XML 소스를 찾는 데 사용되는 XQuery 함수 중 하나입니다. 여기에서 "books.xml"을 전달했습니다. 상대 경로를 고려할 때 books.xml은 books.xqy가있는 동일한 경로에 있어야합니다.
XPath 표현식 사용
doc("books.xml")/books/book
XQuery는 XPath 표현식을 많이 사용하여 검색 할 XML의 필수 부분을 찾습니다. 여기에서는 books 노드에서 사용할 수있는 모든 book 노드를 선택했습니다.
개체 반복
for $x in doc("books.xml")/books/book
XQuery는 xml 데이터를 개체로 취급합니다. 위의 예에서 $ x는 선택한 노드를 나타내고 for 루프는 노드 모음을 반복합니다.
조건 적용
where $x/price>30
$ x는 선택된 노드를 나타내므로 "/"는 필수 요소의 값을 가져 오는 데 사용됩니다. "where"절은 검색 결과에 조건을 지정하는 데 사용됩니다.
결과 반환
return $x/title
$ x는 선택된 노드를 나타내므로 "/"는 필요한 요소, 가격, 제목의 값을 가져 오는 데 사용됩니다. "return"절은 검색 결과에서 요소를 반환하는 데 사용됩니다.