国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學(xué)院 > 開發(fā)設(shè)計 > 正文

用XML數(shù)據(jù)島解決用戶界面問題 - 2

2019-11-18 21:06:06
字體:
供稿:網(wǎng)友
把處理過程移到客戶端

  當(dāng)Web服務(wù)器返回網(wǎng)頁后,所有進(jìn)一步的操作處理都在客戶端進(jìn)行。我原先認(rèn)為如果向客戶端發(fā)送一個大的數(shù)據(jù)集會使程序的速度放慢。但后來我卻發(fā)現(xiàn)一次性發(fā)送所有數(shù)據(jù)比在客戶與服務(wù)器之間來回地進(jìn)行數(shù)據(jù)交換快得多。唯一可被注意到的停頓只是在IE5的xml解析器讀取數(shù)據(jù)時的一個短暫的初始化停頓。

  HTML文件本身包含有4個元素:一個保存州名數(shù)據(jù)的選擇列表(主列表),XML數(shù)據(jù),一個從屬列表的div標(biāo)記占位符,和兩個腳本。當(dāng)州名選擇列表的選項發(fā)生變化時,第二個腳本就執(zhí)行(Listing 2)。

  你希望每次用戶選擇一個州時都能從數(shù)據(jù)島重新得到相應(yīng)的商店列表。所以你需要一個腳本去處理州名選擇列表的onChange事件:

  

在這個腳本中重新得到了州名選擇列表的值:
  Dim stateCode

  stateCode=document.all.State.value

  接著重新得到所選定州的商店列表。你可以通過兩個方法得到這個列表。第一個辦法就是獲得<XML>標(biāo)記符的記錄集屬性的引用:

  Dim R

  Set R = xmldata.recordset

通過這個方法得到的記錄集是一個標(biāo)準(zhǔn)的ADO記錄集對象,字段名都與標(biāo)記符相對應(yīng)。這個方法只有在每個記錄都有同樣的字段的"簡單"XML數(shù)據(jù)文件中才能很好地工作。

  第二個方法就比較強(qiáng)大和普遍。IE5把XML數(shù)據(jù)島象其他HTML元素一樣對待。為了在客戶端訪問XML數(shù)據(jù),你只需通過ID來引用該元素。IE5將返回XML樹的根元素(document元素):

  set xml = document.all("xmldata")

  你用這個document元素可以執(zhí)行Extensible Stylesheet Language (XSL)查詢語句。使用XSL查詢語句,你可以得到某個給定層次上的節(jié)點(diǎn)列表,包含指定屬性的節(jié)點(diǎn)列表,或以上兩者的任意組合。例如,以下的查詢語句返回所有符合用戶所選州的商店節(jié)點(diǎn):

  Dim nodes

  set nodes = xml.selectNodes ("locations/state[@code='" & stateCode & "']/store")

XSL搜索字符串看起來很象一個文件路徑;它有XML樹相應(yīng)各層次的值。用"/"分隔每個層次。以"節(jié)點(diǎn)=數(shù)值"的匹配方式加到相關(guān)節(jié)點(diǎn)的"[]"中搜索指定數(shù)值的節(jié)點(diǎn),在屬性名前加上"@"來搜索包含指定屬性的節(jié)點(diǎn)。運(yùn)行selectNodes方法將返回一個IXMLDOMNodes集合對象。最后,顯示從屬列表。最簡單的方法:根據(jù)XSL查詢語句返回的節(jié)點(diǎn)列表來改變從屬列表的標(biāo)
記符的值:

  set aList = document.all("cities")

  aList.options.length = 0

  i = 0

  For Each N In nodes

   anID = N.selectSingleNode("id").text

   aCity = N.selectSingleNode _("city").text

   aList.options.length = _aList.options.length + 1

   aList.options(i).id = anID

   aList.options(i).value = aCity

   aList.options(i).innerText = aCity

   i = i + 1

  Next

  現(xiàn)在你知道了如何利用XML數(shù)據(jù)島來解決從屬列表問題。注意:這一技巧不適合于大規(guī)模的數(shù)據(jù)-如那些成千上萬的記錄-但如果那樣的話,那主要還是一個如何顯示的問題,而非技術(shù)上的問題。如果你發(fā)現(xiàn)一個查詢語句可能返回不適合的大組記錄,你即可以限制返回記錄的數(shù)目(例如為用戶提供一個"More Record"按鈕),又可以修改用戶界面使用戶可以點(diǎn)擊下一層次的內(nèi)容,因此而限制了用戶必須選擇的記錄數(shù)目。



發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 乌拉特后旗| 滦南县| 扎鲁特旗| 南部县| 赣州市| 仁化县| 岑溪市| 新闻| 绥棱县| 屯昌县| 文山县| 五莲县| 哈巴河县| 郁南县| 岳普湖县| 丰台区| 盘山县| 磴口县| 遂川县| 海安县| 永宁县| 襄樊市| 凌源市| 盘锦市| 江阴市| 南汇区| 商河县| 揭东县| 韶关市| 临邑县| 博兴县| 邹城市| 江北区| 同江市| 乳山市| 洛隆县| 常德市| 洛宁县| 景德镇市| 南城县| 南城县|