XQuery 함수

XQuery 1.0, XPath 2.0 및 XSLT 2.0는 동일한 함수 라이브러리를 공유합니다.

XQuery 함수

XQuery는 100개 이상의 내장 함수를 포함하고 있습니다. 이 함수들은 문자열 값, 수치, 날짜 및 시간 비교, 노드 및 QName 작업, 시퀀스 작업, 논리 값 등에 사용될 수 있습니다. 또한 XQuery에서 자신의 함수를 정의할 수도 있습니다.

XQuery 내장 함수

XQuery 함수 이름 공간의 URI:

http://www.w3.org/2005/02/xpath-functions

함수 이름 공간의 기본 접두어는 fn:입니다.

힌트:함수는 fn: 접두어를 통해 호출됩니다. 예를 들어 fn:string()와 같습니다. 그러나 fn:는 이름 공간의 기본 접두어이므로 함수 이름은 호출될 때 접두어를 사용하지 않아도 됩니다.

우리의 XPath 교육에서 완전한《내장 XQuery 함수 참조 매뉴얼》。

함수 호출 예제

함수 호출은 표현식과 함께 사용될 수 있습니다. 다음 예제를 참조하세요:

예제 1: 요소에서

<name>{upper-case($booktitle)}</name>

예제 2: 경로 표현식의 조건자에서

doc("books.xml")/bookstore/book[substring(title,1,5)='Harry']

예제 3: let 문에서

let $name := (substring($booktitle,1,4))

XQuery 사용자 정의 함수

필요한 XQuery 함수를 찾을 수 없다면, 자신의 함수를 작성할 수 있습니다

사용자 정의 함수는 쿼리 내에서 또는 독립된 라이브러리에서 정의할 수 있습니다

문법

declare function 접두사:함수 이름($파라미터 AS 데이터 타입)
  AS 반환 데이터 타입
{
(: ...함수 코드... :)
;

사용자 정의 함수에 대한 주의사항:

  • declare function 키워드를 사용하세요
  • 함수 이름은 접두사를 사용해야 합니다
  • 파라미터 데이터 타입은 일반적으로 XML Schema에서 정의된 데이터 타입과 일치합니다
  • 함수 본문은 괄호로 감싸져야 합니다

사용자 정의 함수를 선언한 예제:

declare function local:minPrice(
  $price as xs:decimal?,
  $discount as xs:decimal?)
  AS xs:decimal?
{
let $disc := ($price * $discount) div 100
return ($price - $disc)
;
(위의 함수 호출 예제)
<minPrice>{local:minPrice($book/price, $book/discount)}</minPrice>