XML卷之實戰錦囊(2)動態查詢(轉)

amyz發表於2007-08-12
XML卷之實戰錦囊(2)動態查詢(轉)[@more@]

  動機: 

  查詢功能是我們在網站上見過的最普遍也是最常用的一個功能模組了。以往的資訊查詢都是連線到資料庫的,每一次點選都必須要後臺資料庫的支援。然而很多情況下使用者往往只針對某一部分的資料進行操作,這樣不但伺服器的負擔加重,而且嚴重的影響使用者瀏覽的速度。 

  針對這種情況我們需要將使用者需要的某一部分資料以XML的方式傳遞到客戶端,使用者對這些資料可以很方便的進行操作。既方便了使用者,又減輕了伺服器資料庫的負擔。何樂而不為呢!而且這項功能可以通用到其他眾多模組,因此新增了這個動態查詢功能。 

  材料: 

  XML卷之動態查詢有2個檔案:search.xml  和 search.xsl 

  作用: 

  在不重新整理頁面的情況下對資料進行過濾篩選,有效的提高資料查詢的功能。 

  效果:

  程式碼: 

  search.xml      1   Sailflying   一個簡單的查詢   2002-1-11 17:35:33   XML專題       2   flyingbird   嫁給你,是要你疼的   2001-09-06 12:45:51   灌水精華       3   苛子   正規表示式在UBB論壇中的應用   2001-11-23 21:02:16   Web 程式設計精華       4   太乙郎   年末經典分舵聚會完全手冊 v0.1   2000-12-08 10:22:48   論壇灌水區       5   mmkk   Asp錯誤資訊總彙   2001-10-13 16:39:05   javascript指令碼 

  search.xsl 

  

  講解: 

  1)search.xml 是資料檔案,相信大家都不會有問題。

  2)search.xsl 是格式檔案,有幾個地方要注意。 

  (1)指令碼中: 

  sortField=document.XSLDocument.selectNodes("//@select");

  作用是:找到所有屬性為select的節點。這個和我在動態排序中說到的sortField=document.XSLDocument.selectSingleNode("//@order-by"); 

  有些不一樣了。大家注意這個小小的區別以及各自的功能。 

  sortField[1].value="team[blue_ID='"+x+"']";

  因此sortField[1]就是找到的第二個節點,它對應的節點就是

  引數 x 是文字框中輸入的數值。

  我們將select="team" 的搜尋條件修改為select="team[blue_ID='x']"作用是:增加判斷條件,只有blue_ID的數值等於 x 的XML資料才顯示出來。

  當然大家可以豐富判斷的條件,我在這裡做的簡單判斷是為了讓大家更容易理解。 

  最後透過重新顯示Layer1的innerHTML值來顯示新的排序內容。

  (2)文字中:

  select="team"在我這裡它是 sortField[1],但你在做的時候可能就會更改。

  那麼你就一定要計算準確可錯不得哦,不然就找到別家去了!

  我提供一個常用的方法:在程式碼裡你可以用迴圈來判斷是否為你需要的節點。 

  另外說一點:

  XML對大小寫的要求極其嚴格。所以你的書寫不規範的話,它可是會感冒的呀!

  後記: 

  大家熟悉動態排序和動態查詢的完成思路後會發現,其實我們的實現手法很簡單。

  就是修改某一個數值,然後重新顯示。

  在動態分頁的功能中我們依然是按照這個思路去完成的。 


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/10752019/viewspace-950213/,如需轉載,請註明出處,否則將追究法律責任。

相關文章