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>
...