Functions and recursion

Simple function with two parameters

xquery version "3.0";
declare function local:greet($name as xs:string$lang as xs:string?as xs
:string {
    if ($lang = "de"then
        "Hallo " || $name
    else if ($lang = "es"then
        "Hola " || $name
    else
        "Hello " || $name
};
local:greet("Susi""de"),
local:greet("Susi""es"),
local:greet("Susi""en"),
local:greet("Susi", ())

Recursion: compute the factorial of a given integer

xquery version "1.0";
declare function local:fact($n as xs:integer) {
    if ($n eq 1then
        $n
    else
        $n * local:fact($n - 1)
};
local:fact(6)