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 1) then
        $n
    else
        $n * local:fact($n - 1)
};

local:fact(6)