XQuery/注册函数
外观
< XQuery
您需要所有函数或所有模块及其函数的列表。
有两个函数可用于获取当前运行时系统中的函数列表
util:registered-functions()
util:registered-functions($module)
第一个函数返回所有注册的函数,第二个函数返回给定模块的所有注册的函数。
以下 XQuery 创建一个按字母顺序排列的所有 XQuery 函数的列表。输出将取决于安装中配置的模块。
xquery version "1.0";
import module namespace util = "http://exist-db.org/xquery/util";
<results>{
for $function in util:registered-functions()
order by $function
return
<function>{ $function}</function>
}
<total-count>{count(util:registered-functions())}</total-count>
</results>
<results>
<function>compression:gzip</function>
<function>compression:tar</function>
<function>compression:zip</function>
<function>datetime:count-day-in-month</function>
<function>datetime:date-for</function>
...
请注意,如果没有命名空间前缀,则该函数是 XPath 库函数。(或者数学模块,它也显示为没有前缀 ??)
更实用的格式是按模块列出函数
xquery version "1.0";
import module namespace util = "http://exist-db.org/xquery/util";
<results>{
for $module in util:registered-modules()
order by $module
return
<module>
<module-uri>{$module}</module-uri>
{let $functions := util:catch("*",util:registered-functions($module), ())
(: added because one module (console ) has a missing namespace and throws an error - not sure why :)
return
if (exists($functions))
then
for $function in $functions
order by $function
return
<function>{$function}</function>
else
<error>Namespace undefined</error>
}
</module>
}
</results>
示例输出
<results>
<module>
<module-uri>http://exist-db.org/xquery/compression</module-uri>
<function>compression:gzip</function>
<function>compression:tar</function>
<function>compression:zip</function>
</module>
<module>
<module-name>http://exist-db.org/xquery/datetime</module-name>
<function>datetime:count-day-in-month</function>
<function>datetime:date-for</function>
...