用XML数据岛解决用户界面问题 - 2

2016-01-29 18:20 6 1 收藏

用XML数据岛解决用户界面问题 - 2,用XML数据岛解决用户界面问题 - 2

【 tulaoshi.com - ASP 】

  把处理过程移到客户端

  当Web服务器返回网页后,所有进一步的操作处理都在客户端进行。我原先认为如果向客户端发送一个大的数据集会使程序的速度放慢。但后来我却发现一次性发送所有数据比在客户与服务器之间来回地进行数据交换快得多。唯一可被注意到的停顿只是在IE5的XML解析器读取数据时的一个短暂的初始化停顿。

  HTML文件本身包含有4个元素:一个保存州名数据的选择列表(主列表),XML数据,一个从属列表的div标记占位符,和两个脚本。当州名选择列表的选项发生变化时,第二个脚本就执行(Listing 2)。

  你希望每次用户选择一个州时都能从数据岛重新得到相应的商店列表。所以你需要一个脚本去处理州名选择列表的onChange事件:

  

在这个脚本中重新得到了州名选择列表的值:
  Dim stateCode

  stateCode=document.all.State.value

  接着重新得到所选定州的商店列表。你可以通过两个方法得到这个列表。第一个办法就是获得<XML>标记符的记录集属性的引用:

  Dim R

  Set R = xmldata.recordset

通过这个方法得到的记录集是一个标准的ADO记录集对象,字段名都与标记符相对应。这个方法只有在每个记录都有同样的字段的"简单"XML数据文件中才能很好地工作。

  第二个方法就比较强大和普遍。IE5把XML数据岛象其他HTML元素一样对待。为了在客户端访问XML数据,你只需通过ID来引用该元素。IE5将返回XML树的根元素(document元素):

  set xml = document.all("xmldata")

  你用这个document元素可以执行Extensible Stylesheet Language (XSL)查询语句。使用XSL查询语句,你可以得到某个给定层次上的节点列表,包含指定属性的节点列表,或以上两者的任意组合。例如,以下的查询语句返回所有符合用户所选州的商店节点:

  Dim nodes

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

XSL搜索字符串看起来很象一个文件路径;它有XML树相应各层次的值。用"/"分隔每个层次。以"节点=数值"的匹配方式加到相关节点的"[]"中搜索指定数值的节点,在属性名前加上"@"来搜索包含指定属性的节点。运行selectNodes方法将返回一个IXMLDOMNodes集合对象。最后,显示从属列表。最简单的方法:根据XSL查询语句返回的节点列表来改变从属列表的标
记符的值:

  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

  现在你知道了如何利用XML数据岛来解决从属列表问题。注意:这一技巧不适合于大规模的数据-如那些成千上万的记录-但如果那样的话,那主要还是一个如何显示的问题,而非技术上的问题。如果你发现一个查询语句可能返回不适合的大组记录,你即可以限制返回记录的数目(例如为用户提供一个"More Record"按钮),又可以修改用户界面使用户可以点击下一层次的内容,因此而限制了用户必须选择的记录数目。


 

来源:http://www.tulaoshi.com/n/20160129/1505357.html

延伸阅读
标签: Web开发
内码问题.用这段代码的吧,我已经改得很精简了. 使用XMLHTTP抓取地址并进次内容处理 以下为引用的内容: Function GetBody(Url) Dim objXML On Error Resume Next Set objXML = CreateObject("Microsoft.XMLHTTP") With objXML .Open "Get", Url, False, "", "" .Send GetBody = .ResponseBody End With GetBody=BytesToBstr(GetBody,"GB...
标签: ASP
  原文:http://aspalliance.com/articleViewer.aspx?aId=477&pId=-1   作者:Andrew Mooney 翻译:孟子E章  [下载源代码http://aspalliance.com/download/477/ASPAlliance477.zip]   Xml2OleDb简介 XML是互联网共享数据的最好的方法,XML格式的数据可以很轻松的集成到不同的Web应用中去。但如果你想将XML文件插入到...
摘 要: 本文提出并实现了一种数据驱动的命令界面生成方案, 以一致的方式生成所有命令的界面元素,能方便灵活地适应命令的修改变化。 要害词: 数据驱动;命令; Java !-- frame contents -- !-- /frame contents -- 在典型的企业应用软件中,应用一般会提供一组命令作为用户与应用程序之间的接口。随着企...
标签: autocad教程
“渲染”工具栏(图10)用于操作AutoCAD的润色加工功能。 图10 “对象捕捉”工具栏(图11)用于帮助用户选择对象上的特殊点,如端点、中点、交点和圆心等。 图11 “UCS”工具栏(图12)用于设置工作平面,它对于三维造型十分有用,也有助于绘制二维图。 图12 “实体编辑”工具栏(图13)用于编辑实体。 图13 ...
标签: Web开发
HTML HEADTitleHTML中的数据岛中的记录集/Title/HEAD body bkcolor=#EEEEEE text=blue bgcolor="#00FFFF" Table align=center width="100%"TRTD align="center"    h5bfont size="4" color="#FF0000"HTML中的XML数据岛记录编辑与添加/font/b/h5   /TD/TR/Table HR 酒店名称:input type=text d...

经验教程

364

收藏

11
微博分享 QQ分享 QQ空间 手机页面 收藏网站 回到头部