跳轉到內容

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>

    ...
華夏公益教科書