XQuery - funktiot

XQuery 1.0, XPath 2.0 ja XSLT 2.0 jakavat saman funktion kirjaston.

XQuery - funktiot

XQuery sisältää yli 100 sisäänrakennettua funktiota. Näitä funktioita voidaan käyttää merkkijonoarvoissa, luvuissa, päivämääriä ja aikaa, solmu- ja QName-toimintoja, sarjojen toimintoja, loogisissa arvoissa ja niin edelleen. Voit myös määrittää omia funktioitasi XQuery:ssä.

XQuery-sisäänrakennetut funktiot

XQuery-funktioiden nimenkerroksen URI:

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

Funktioiden nimenkerroksen oletusarvoinen etuliite on fn:.

Vinkki:Funktiot kutsutaan usein fn: -etuliitteellä, esimerkiksi fn:string(). Kuitenkin, koska fn: on nimenkerroksen oletusarvoinen etuliite, etuliitettä ei tarvitse käyttää kutsun aikana.

Voit löytää täyden XPath-opetuspaketin <Sisäänrakennettujen XQuery-funktioiden viittauskirja》。

Funktiohakemistojen esimerkki

Funktio voidaan käyttää yhdessä ilmentymien kanssa. Katso seuraava esimerkki:

Esimerkki 1: elementissä

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

Esimerkki 2: polkiesittelyn lausekkeessa

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

Esimerkki 3: let-lauseessa

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

XQuery-käyttäjän määrittämät funktiot

Jos tarvittavaa XQuery-funktiota ei löydy, voit kirjoittaa oman funktionsi.

Käyttäjän määrittämät funktiot voidaan määrittää kyselyssä tai erillisessä kirjastossa.

Syntaksi

declare function etuliite:funktioimi($parametri AS tyyppi)
  AS palautettavan datan tyyppi
{}}
(: ...funktiojen koodi... :)
;

Huomioitavaa käyttäjän määrittämien funktioiden osalta:

  • Käytä declare function -avainsanaa
  • Funktiojen nimi tulee käyttää etuliitettä
  • Parametrien tyyppi yleensä sama kuin XML Schema -määrittelyssä
  • Funktiojen pääosa on sulkeissa

Esimerkki käyttäjän määrittämästä funktiosta kyselyssä:

declare function local:minPrice(
  $price as xs:decimal?,
  $discount as xs:decimal?)
  AS xs:decimal?
{}}
let $disc := ($price * $discount) div 100
return ($price - $disc)
;
(:Alla on esimerkki yllä olevan funktion kutsusta:)
<minPrice>{local:minPrice($book/price, $book/discount)}</minPrice>