|{{Func|inspect:functions||function(*)*}}<br/>{{Func|inspect:functions|$uri as xs:string|function(*)*}}
|-valign="top"
| '''Summary'''
|Returns function items for all user-defined functions (both public and private) that are known in the current query context. If a {{Code|$uri}} is specified, the specified resource will be retrieved as string and compiled, and its functions will be added to the query context and returned to the user. A relative URI will be resolved against the static base URI of the query.
|-valign="top"
|'''Examples'''
|Invokes the declared functions and returns their values:<br/>
<pre classsyntaxhighlight lang="brush:xquery">
declare %private function local:one() { 12 };
declare %private function local:two() { 34 };
for $f in inspect:functions() return $f()
</presyntaxhighlight>
Compiles all functions in {{Code|code.xqm}} and invokes the function named {{Code|run}}:
<pre classsyntaxhighlight lang="brush:xquery">
let $uri := 'code.xqm'
let $name := "'run"'
for $f in inspect:functions($uri)
where local-name-from-QName(function-name($f)) = $name
return $f()
</presyntaxhighlight>|- valign="top"| '''Errors'''|{{Error|parse|#Errors}} Error while parsing a module.
|}
{| width='100%'
|-valign="top"
| width='120' | '''Signatures'''
|{{Func|inspect:function-annotations|$function as function(*)?|map(xs:QName, xs:anyAtomicType*)}}<br/>
|-valign="top"
| '''Summary'''
|Returns the annotations of the specified {{Code|$function}} in a map.
|-valign="top"
| '''Examples'''
|
* Returns an empty map:
<pre classsyntaxhighlight lang="brush:xquery">
inspect:function-annotations(true#0)
</presyntaxhighlight>
* Returns a map with a single key <code><nowiki>Q{http://www.w3.org/2012/xquery}private</nowiki></code> and an empty sequence as value:
<pre classsyntaxhighlight lang="brush:xquery">
declare %private function local:f() { 'well hidden' };
inspect:function-annotations(local:f#0)
</presyntaxhighlight>
|}
{| width='100%'
|-valign="top"
| width='120' | '''Signatures'''
|{{Func|inspect:static-context|$function as function(*)?, $name as xs:string|item()*}}<br/>
|-valign="top"
| '''Summary'''
|Returns a component of the [https://www.w3.org/TR/xquery-31/#dt-static-context static context] of a {{Code|$function}} with the specified {{Code|$name}}. If no function is supplied, the current static context is considered.<br/>The following components can be requested:
* {{Code|decimal-formats}}: Nested map with all statically known decimal formats
|-valign="top"
| '''Examples'''
|
* Returns the static base URI (same as {{Code|static-base-uri()}}):
<pre classsyntaxhighlight lang="brush:xquery">
inspect:static-context((), 'base-uri')
</presyntaxhighlight>
* Returns a map with all namespaces that are statically known in the module of the specified function:
<pre classsyntaxhighlight lang="brush:xquery">
import module namespace data = 'data.xqm';
inspect:static-context(data:get#1, 'namespaces')
</presyntaxhighlight>|-valign="top"
| '''Errors'''
|{{Error|unknown|#Errors}} The specified component does not exist.
=Documentation=
==inspect:type==
{| width='100%'
|- valign="top"
| width='120' | '''Signatures'''
|{{Func|inspect:type|$value as item()*|xs:string}}<br/>{{Func|inspect:type|$value as item()*, $options as map(*)|xs:string}}
|- valign="top"
| '''Summary'''
|Returns a string representation of the type of a {{Code|$value}}:
* The string includes the occurrence indicator.
* The type of functions and nodes may be stricter than the returned type.
* For type checking, the standard expressions {{Code|typeswitch}} and {{Code|instance of}} should be used instead.
The following {{Code|$options}} are available:
* {{Code|item}}: If enabled, only the item type is returned and the occurrence indicator is omitted. The default is {{Code|false()}}.
* {{Code|mode}}: If {{Code|value}} is specified, the assigned type of the result value is returned. With {{Code|expression}} the type of the input expression is returned (please note that the original expression may already have been rewritten at compile-time). With {{Code|computed}}, the exact value is computed at runtime, based on the expression and the result value. The default is {{Code|computed}}.
|{{Func|inspect:function|$function as function(*)|element(function)}}
|-valign="top"
| '''Summary'''
|Inspects the specified {{Code|$function}} and returns an element that describes its structure. The output of this function is similar to eXist-db’s [httphttps://exist-db.org/exist/apps/fundocs/view.html?uri=http://exist-db.org/xquery/inspection&location=java:org.exist.xquery.functions.inspect.InspectionModule inspect:inspect-function] function.|-valign="top"
Return the names of all private functions in the current context:
<pre classsyntaxhighlight lang="brush:xquery">
for $f in inspect:context()/function
where $f/annotation/@name = 'private'
return $f/@name/string()
</presyntaxhighlight>
|}
{| width='100%'
|-valign="top"
| width='120' | '''Signatures'''
|{{Func|inspect:module|$uri as xs:string|element(module)}}
|-valign="top"
| '''Summary'''
|Retrieves the resource located at the specified {{Code|$uri}}, parses it as XQuery module, and generates an element that describes the module's structure. A relative URI will be resolved against the static base URI of the query.
|-valign="top"
|'''Examples'''
|An example is [[#Examples|shown below]].
|- valign="top"
| '''Errors'''
|{{Error|parse|#Errors}} Error while parsing a module.
|}
{| width='100%'
|-valign="top"
| width='120' | '''Signatures'''
|{{Func|inspect:xqdoc|$uri as xs:string|element(xqdoc:xqdoc)}}
|-valign="top"
| '''Summary'''
|Retrieves the resource located at the specified {{Code|$uri}}, parses it as XQuery module, and generates an xqDoc element. A relative URI will be resolved against the static base URI of the query.<br/>[http://xqdoc.org / xqDoc] provides a simple vendor-neutral solution for generating documentation from XQuery modules. The documentation conventions have been inspired by the JavaDoc standard. Documentation comments begin with {{Code|(:~}} and end with {{Code|:)}}, and tags start with {{Code|@}}. xqDoc comments can be specified for main and library modules and variable and function declarations.<br/>We have slightly extended the xqDoc conventions to do justice to more recent versions of XQuery (Schema: [httphttps://files.basex.org/etc/xqdoc-1.1.30052013.xsd xqdoc-1.1.30052013.xsd]):<br/>
* an {{Code|<xqdoc:annotations/>}} node is added to each variable or function that uses annotations. The xqdoc:annotation child nodes may have additional {{Code|xqdoc:literal}} elements with {{Code|type}} attributes (xs:string, xs:integer, xs:decimal, xs:double) and values.
* a single {{Code|<xqdoc:namespaces/>}} node is added to the root element, which summarizes all prefixes and namespace URIs used or declared in the module.
* name and type elements are added to variables.
|-valign="top"
|'''Examples'''
|An example is [[#Examples|shown below]].
|- valign="top"
| '''Errors'''
|{{Error|parse|#Errors}} Error while parsing a module.
|}
This is the {{Code|sample.xqm}} library module:
<pre classsyntaxhighlight lang="brush:xquery">
(:~
: This module provides some sample functions to demonstrate
$number
};
</presyntaxhighlight>
If {{Code|inspect:module('sample.xqm')}} is run, the following output will be generated: