XQuery- functies
XQuery 1.0, XPath 2.0 en XSLT 2.0 delen dezelfde functiebibliotheek.
XQuery-functies
XQuery is gebouwd op XPath-expressies. XQuery 1.0 en XPath 2.0 delen hetzelfde datamodel en ondersteunen dezelfde functies en operators.
U kunt ook uw eigen functies definiëren in XQuery.
XQuery-gegevenstypen
XQuery deelt dezelfde gegevenstypen als XML Schema 1.0 (XSD).
Voorbeelden van functie-aanroepen
Een aanroep van een functie kan verschijnen waar een uitdrukking kan verschijnen. Kijk naar de voorbeelden hieronder:
Voorbeeld 1: In een element
<name>{upper-case($booktitle)}</name>
Voorbeeld 2: In het predikaat van een paduitdrukking
doc("books.xml")/bookstore/book[substring(title,1,5)='Harry']
Voorbeeld 3: In een let-clausule
let $name := (substring($booktitle,1,4))
Door de gebruiker gedefinieerde functies van XQuery
Als u de XQuery-functie die u nodig hebt niet kunt vinden, kunt u deze zelf schrijven.
Door de gebruiker gedefinieerde functies kunnen in de query of in een aparte bibliotheek worden gedefinieerd.
Syntaxis
declare function prefix:function_name($parameter as datatype)
as returnDatatype
{
...function code here...
};
Opmerkingen over door de gebruiker gedefinieerde functies:
- Gebruik het sleutelwoord declare function
- De naam van de functie moet worden voorafgegaan
- Het datatype van de parameters is grotendeels hetzelfde als de datatypes gedefinieerd in XML Schema
- De hoofdtekst van de functie moet worden omgeven door accolades
Voorbeeld van een door de gebruiker gedefinieerde functie gedeclareerd in de query
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>