Latest web development tutorials

Funkcje XQuery

XQuery 1.0, 2.0 i XPath XSLT 2.0 mają te same biblioteki.


Funkcje XQuery

XQuery zawiera ponad 100 wbudowanych funkcji. Funkcje te mogą być stosowane do ciągów znaków, cyfry, data i godzina, porównania węzła i manipulacji QName, manipulacja sekwencji wartości logicznych, i tak dalej. Można również definiować własne funkcje w XQuery.


XQuery wbudowanych funkcji

Funkcja XQuery nazw URI:

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

Domyślną funkcją namespace prefix jest fn.

Wskazówka: zadzwoń prefiks, takich jak funkcja fn :: często poprzez ciąg fn (). Jednakże, ponieważ fn: Jest to domyślny przedrostek przestrzeni nazw, nazwy funkcji nie trzeba stosować prefiks po nazwie.

Można znaleźć kompletny "w naszym poradniku XPath wbudowanych funkcji XQuery Reference Manual ".


Przykłady wywołań funkcji

wywołania funkcji można używać wyrażenia. Rozważmy następujący przykład:

Przykład 1: Element

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

Przykład 2: W wyrażeniu ścieżka w orzecznika

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

Przykład 3: niech oświadczenie

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


Funkcje definiowane przez użytkownika XQuery

Jeśli nie można odnaleźć żądanej funkcji XQuery, można napisać własne funkcje.

Albo użytkownik może zdefiniować oddzielną funkcję niestandardową zapytania do bazy danych.

gramatyka

declare function前缀:函数名($参数 AS 数据类型)
AS返回的数据类型
{
...函数代码...
}

O zdefiniowanych przez użytkownika funkcji Uwagi:

  • Proszę używać słowa kluczowego function Oświadczam
  • Nazwy funkcji należy używać prefiksu
  • Parametr Typ danych jest na ogół zgodne z danymi określonymi w rodzaju schematu XML
  • Ciało funkcji muszą być otoczone klamrami

Za przykłady funkcyjnych instrukcję zapytania zdefiniowane przez użytkownika:

declare function local:minPrice($p as xs:decimal?,$d as xs:decimal?)
AS xs:decimal?
{
let $disc := ($p * $d) div 100
return ($p - $disc)
}

Below is an example of how to call the function above:

<minPrice>{local:minPrice($book/price,$book/discount)}</minPrice>