XQuery funktioner
- Föregående sida XQuery välj
- Nästa sida XQuery sammanfattning
XQuery 1.0, XPath 2.0 och XSLT 2.0 delar samma funktionssamling.
XQuery funktioner
XQuery innehåller över 100 inbyggda funktioner. Dessa funktioner kan användas för strängvärden, numeriska värden, datum- och tidsjämförelser, nod- och QName-opereringar, sekvensopereringar, logiska värden och mer. Du kan också definiera egna funktioner i XQuery.
Inbyggda XQuery-funktioner
URI för XQuery-funktionernas namnrymd:
http://www.w3.org/2005/02/xpath-functions
Standardprefixen för funktionernas namnrymd är fn:.
Tips:Funktioner kallas ofta genom prefixet fn:, till exempel fn:string(). Men eftersom fn: är den förvalda prefixet för namnrymdar behöver funktionens namn inte användas med prefix när den anropas.
Du kan hitta den fullständigaInbyggda XQuery-funktioner referenshandbok》。
Funktionstillämpningsexempel
Funktionssamt uttryck kan användas tillsammans. Se följande exempel:
Exempel 1: I elementen
<name>{upper-case($booktitle)}</name>
Exempel 2: I predikatet för sökvägsexpressionen
doc("books.xml")/bookstore/book[substring(title,1,5)='Harry']
Exempel 3: I let-satsen
let $name := (substring($booktitle,1,4))
XQuery användardefinierade funktioner
Om du inte kan hitta den XQuery-funktion du behöver, kan du skriva din egen funktion.
Användardefinierade funktioner kan definieras i frågor eller i separata bibliotek.
Syntax
declare function prefix:funct namn($parametrar AS datatyp)
AS returnerande datatyp
{
(: ...funktionskod... :)
;
Viktiga punkter om användardefinierade funktioner:
- Använd nyckelordet declare function
- Funktionens namn måste använda ett prefix
- Data typen för parametrarna är vanligtvis samma som de som definieras i XML Schema
- Funktionens kropp måste omges av klamrar
Ett exempel på en användardefinierad funktion som deklarerats i frågan:
declare function local:minPrice(
$price as xs:decimal?,
$discount as xs:decimal?)
AS xs:decimal?
{
let $disc := ($price * $discount) div 100
return ($price - $disc)
;
(: Här är ett exempel på att anropa ovanstående funktion :)
<minPrice>{local:minPrice($book/price, $book/discount)}</minPrice>
- Föregående sida XQuery välj
- Nästa sida XQuery sammanfattning