从属列表问题(dependent list problem)"的问题时常被提出。问题时常出现于当你有两个以上的选择列表时,一个主列表有若干个选项,你希望当用户选择主列表中的某个选项时,在其他的从属列表中显示相关的选项。你可以通过eXtensible Markup Language(XML)的数据岛(data islands)来实现这一功能,把XML内嵌到你的HTML中。这一结果对在客户端的XML应用具有实践意义。
假设你为一家名为"CheapPc"的公司工作,你负责让访问公司网站的用户找到用户所在州的"CheapPc"商店。在公司网站上你列出了州名的列表。当一个顾客在主列表中点击选择一个州时,你希望在从属列表中显示相关的商店列表。
问题在于:你怎样填充从属列表而不用刷新该页面或不用每次用户在主列表中选择时都向服务器发送消息?XML数据岛完美地解决这一问题。当用户发出请求,所有商店的数据都连接成一个XML字符串(Listing 1)。返回的结果是一个镶嵌在HTML页面中的数据岛。该数据岛使用以下XML结构:
根元素包含州名的列表,每个州名的列表依次包含商店的列表。每个商店都有一个相应的ID和城市名。为了生成这一XML字符串,你得用ActiveX Data Object(ADO)查询数据库,并用XML标记符格式化查询结果。把记录集数据格式化成HTML表格和把记录集数据格式化成XM文件之间有一些不同。在本文的后半部分,我将向你展示如何避免过多的串联工作以提高响应时间。你可以点击这里下载例程。