数据服务层应用对不同的零售商可能有不同的形式,VendorDealXMLx.asp网页的作用是根据用户的参数和参数值提取参数值,然后查询零售商数据库,并根据计算机的DTD定义以XML的形式返回结果,这个过程的具体操作如下:
1.从网页的查询字符串(query
string)中提取搜索参数。
2.根据搜索参数,创建一个和零售商数据库结构相匹配的SQL命令。
3.使用ADO来执行该SQL命令。
在建立了SQL命令以后,我们可以用ADO来查询数据库并创建一个XML文档作为响应。首先,XML头和顶层标签被写入到响应对象中,然后打开零售商的数据库。相关示例代码如下:
objConn
= Server.CreateObject("ADODB.Connection");
objConn.Open("ComputerSearchAgent");
执行SQL命令,然后应用处理返回的记录集
objResult
= objConn.Execute(strSQL);
if
(!objResult.EOF)
{
objResult.MoveFirst();
while
(!objResult.EOF)
{
file://此处对每一条记录进行相关的处理.
file://把响应的XML代码写入到响应(Response)对象中
objResult.MoveNext();
}
}
objConn.Close();
每一行记录中的每一列的内容根据DTD的定义被写到Response中,基本形式如下:
Response.Write("<计算机 模型=\""
+objResult("model").Value + "\" 价格=\"" +
objResult("Price").Value +
"\">\n");
Response.Write("<零售商 名字=\"IBM电脑\" " + "站点=\"" +
WEB_SITE + "\"/>\n");
Response.Write("<描述>\n " +
objResult("Description").Value +
"\n
IPTION>\n");
Response.Write("<磁盘 尺寸=\" " + objResult("DiskSize").Value +
"\"/>\n");
Response.Write("<监视器 尺寸=\"" +
objResult("MonitorSize").Value + "\"/>\n");
Response.Write(" "\" 速度=\"" +
objResult("CPUSpeed").Value + "\"/>\n");
Response.Write("<内存
尺寸=\"" + objResult("RAMSize").Value +
"\"/>\n");
Response.Write("<操作系统
名字=\"WinNTW\"/>\n");
Response.Write("<鼠标 类型=\"机械式
\"/>\n");
Response.Write("<光驱
类型=\"CDRW\"/>\n");
Response.Write("计算机>\n");
4.把从数据库中返回的记录集用XML的形式进行表达和构建。当然这个XML文档并不是任何格式都可以的,为了能够对准确的对数据进行汇总和处理,我们需要定义XML文档的DTD格式,所有的零售商输出的XML文档必须遵守这个格式,对我们这个计算机产品搜索系统来说,它的DTD格式如下:
实际上我们建立这个计算机产品搜寻系统的时候,需要给相关的零售商提供一个框架,或者至少提供一些通用的函数集合,使相关的零售商能够更加方便的构建和数据库交互的ASP网页。当然最重要的还是要提供对文档框架进行描述的DTD文件,以便所有的零售商的输出XML文档都遵循DTD定义的格式。
|