跳转到内容

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>

    ...
华夏公益教科书