跳轉到內容

XQuery/獲取 URL 引數

來自華夏公益教科書,自由的教學讀物

您想要建立一個從呼叫 URL 獲取引數的 XQuery。

使用 HTTP Get 或 POST 命令的呼叫 URL 的格式為

  <hostname>:<port>/<path>/xquery.xq?param1=123&param2=456

其中param1是第一個引數,值為123param2是第二個引數,值為456

請注意,問號用於開始引數,而與號用於分隔引數。請記住在 & 之後包含 "amp;"。

xquery version "1.0";

let $param1:= request:get-parameter('param1', '')
let $param2:= request:get-parameter('param2', "")

return
<results>
   if ($param2 = '0') then (
       <message>param2 is empty</message>
   ) else (
      <message>default message</message>
   )
</results>

檢查資料型別

[編輯 | 編輯原始碼]

此外,您可以使用 XML Schema 資料型別和castable as運算子檢查資料型別。

xquery version "1.0";
declare namespace request="http://exist-db.org/xquery/request";
declare namespace xs="http://www.w3.org/2001/XMLSchema";

let $myint := request:get-parameter("myint",0)
let $myint := if ($myint castable as  xs:integer)
              then xs:integer($myint)
              else 0
let $mydecimal := request:get-parameter("mydecimal", 0.0)
let $mydecimal := if ($mydecimal castable as  xs:decimal)
                  then xs:decimal($mydecimal)
                  else 0.0

return
<results>
   <message>Got  myint: {$myint} and  mydecimal: {$mydecimal} </message>
</results>

回顯所有 URL 引數的指令碼

[編輯 | 編輯原始碼]

echo-parameters.xq

xquery version "1.0";

(: echo a list of all the URL parameters  :)
let $parameters :=  request:get-parameter-names()

return
<results>
   <parameters>{$parameters}</parameters>
   {for $parameter in $parameters
   return
   <parameter>
      <name>{$parameter}</name>
      <value>{request:get-parameter($parameter, '')}</value>
   </parameter>
   }
</results>

以下是將引數 "a=1&b=2" 傳送到此 XQuery 的結果

  echo-parameters.xq?a=1&b=2
<results>
    <parameters>b a</parameters>
    <parameter>
        <name>b</name>
        <value>2</value>
    </parameter>
    <parameter>
        <name>a</name>
        <value>1</value>
    </parameter>
</results>

新增除錯引數

[編輯 | 編輯原始碼]

通常您希望有條件地開啟轉換的一部分以在除錯過程中獲取更多資訊。

let $debug := xs:boolean(request:get-parameter('debug', ''))
華夏公益教科書