跳轉至內容

XRX/檢測重複

來自華夏公益教科書,開放的書籍,為開放的世界
< XRX

您希望在表單欄位中使用者輸入時檢測到重複項。

我們將建立一個表單,每次在欄位中輸入字母時都會向伺服器傳送請求。表單將呼叫 ReST 網路服務,並將當前術語作為引數傳遞。

示例 XQuery

[編輯 | 編輯原始碼]

以下查詢可用於伺服器上檢測重複項。

xquery version "1.0";
declare namespace request="http://exist-db.org/xquery/request";
declare option exist:serialize "method=xml media-type=text/xml indent=yes";
let $term-name := request:get-parameter('term-name', '')
let $collection := '/db/terms'
return
if (not($term-name)) then
   <error>
      <message>Error: term-name argument required</message>
   </error>
else
<result>{
  if (collection($collection)/Term[TermName/text()=$term-name or Abbreviation/text()=$term-name])
    then <true/>
    else <false/>
}</result>

此查詢接受一個引數,並返回一個 true 或 false 元素。

$BASENAME/xqueries/term-exists.xq?term-name=Product

如果該術語存在於資料庫中,它將返回以下內容

<result>
   <true/>
</result>

XForms 應用程式

[編輯 | 編輯原始碼]
<html
   xmlns="http://www.w3.org/1999/xhtml"
   xmlns:xf="http://www.w3.org/2002/xforms"
   xmlns:ev="http://www.w3.org/2001/xml-events" >
   <head>
       <title>Duplicate Detection Example</title>
       <xf:model>
           <xf:instance xmlns="" id="term">
               <data>
                   <term-name>Product</term-name>
                </data>
            </xf:instance>
            <xf:submission id="check-for-duplicate" method="get" 
                    action="term-exists.xq" 
                    instance="term" replace="all"/>
        </xf:model>
     </head>
     <body>
          <h1>Check Term</h1>
          <xf:input ref="term-name">
               <xf:label>Term: </xf:label>
          </xf:input>
          <xf:submit submission="check-for-duplicate">
               <xf:label>Check for Dups</xf:label>
          </xf:submit>
     </body>
</html>

現在我們有一個簡單的 XForms,它呼叫網路服務並返回一個 true/false 記錄。我們的下一步是使此測試在使用者鍵入時在後臺發生,並在檢測到重複時顯示警告訊息。

新增逐字元測試

[編輯 | 編輯原始碼]

現在我們有兩個任務。我們需要在使用者輸入時向伺服器傳送事件,並且我們需要在不中斷使用者的情況下將資訊帶回來。

首先,我們想在輸入欄位中新增一個事件,該事件在每次在輸入欄位中鍵入字元時傳送訊息

<xf:input ref="term-name" incremental="true">
   <xf:label >Term: </xf:label>
   <xf:action ev:event="xforms-value-changed">
      <xf:send submission="check-for-duplicate"/>
   </xf:action>
</xf:input>

上一步:FAQ 管理器 下一步:資料元素編輯器

華夏公益教科書