VENDOR_FILE内容形式如下所示:
http://WebServerName1/ VendorDealXML1.asp
http://WebServerName2/ VendorDealXML2.asp
http://WebServerName3/ VendorDealXML3.asp
………..
其中VendorDealXMLx.asp是表示某个零售商处理用户请求的文件。不同的零售商可能
有自己不同的对用户请求的处理方式和自己不同的数据库结构和从数据库中提取记录的方法。
5. 对从不同零售商那里得到的XML文档进行汇总、整理和格式化,注意我们可以让用户选择以不同的格式化的形式返回结果,最简单的就是把XML文档嵌入到HTML文档中,这样浏览器就不会对XML文档进行解析,XML文档就原汁原味的被返回到用户处,另外一种就是用XML+CSS的方式返回结果, 第三种方式就是通过XML+XSL的方式返回结果,最后一种方式就是先在服务器端把XML转换成HTML,然后再把转换后生成的HTML返回到用户处。
基本的业务操作流程就是这样的,下面我们需要讨论一些实现的细节方面的问题。
1.函数BuildURL的分析
函数BuildURL的作用是基于用户的请求,生成一个请求命令(用HTTP POST方法发送请求)到不同的零售商处,所以这里问题的关键是要构造一个QueryString字符串。生成的QueryString字符串的形式如下:
http://WebServerName1/VendorDealXML1.asp?价格=20000&磁盘=4&监视器=15&CPU=300&内存=16&操作系统=Windows+98&鼠标=机械式&光驱=CDROM
2.VendorDealXMLx.asp文档实际上是由不同的零售商自己实现的,该文档对传进来的参数进行分析,并和数据库进行交互(这是数据服务层的内容,我们在第五部分有详细的描述),然后返回一个符合DTD定义的标准的XML文档。关于DTD的定义,在后面也有相关的说明。
3.函数AddXMLBody的分析
函数AddXMLBody的作用是从所有的零售商处得到查询的结果,并对结果进行合并,这个函数通过解析XML树的方法进行递归操作。这里的一个问题是为什么我们要解析返回的XML,然后在构建新的XML文档呢?首先,通过解析器我们可以验证从零售商处得到的XML文档的格式是否是正确的,其次,它可以保证零售商产生的XML文档没有其他和我们应用中无关的元素,第三,它可以使我们对零售商的XML文档进行方便的操作处理。对XML文档进行解析的基本流程可以用下面的伪代码表示:
遍历根节点下面所有的子节点
如果子节点不是一个元素节点(element node)的话,就跳过它得到子节点的属性
增加元素的开放标签(opening element tag)到strXML字符串中遍历该子节点下面的孩子节点
如果该子节点是一个文本节点的话保存它的值并退出循环
结束遍历
用子节点作为参数调用AddXMLBody,这是一个简单的递归操作.
增加所有的文本节点到strXML中去
增加所有元素的关闭标签(closing element tag)到 strXML
结束遍历
4. 在结束对零售商的XML文件的分析以后,最后的任务是发送结果到用户处。在发送结果到
http://WebServerName1/ VendorDealXML1.asp
http://WebServerName2/ VendorDealXML2.asp
http://WebServerName3/ VendorDealXML3.asp
………..
其中VendorDealXMLx.asp是表示某个零售商处理用户请求的文件。不同的零售商可能
有自己不同的对用户请求的处理方式和自己不同的数据库结构和从数据库中提取记录的方法。
5. 对从不同零售商那里得到的XML文档进行汇总、整理和格式化,注意我们可以让用户选择以不同的格式化的形式返回结果,最简单的就是把XML文档嵌入到HTML文档中,这样浏览器就不会对XML文档进行解析,XML文档就原汁原味的被返回到用户处,另外一种就是用XML+CSS的方式返回结果, 第三种方式就是通过XML+XSL的方式返回结果,最后一种方式就是先在服务器端把XML转换成HTML,然后再把转换后生成的HTML返回到用户处。
基本的业务操作流程就是这样的,下面我们需要讨论一些实现的细节方面的问题。
1.函数BuildURL的分析
函数BuildURL的作用是基于用户的请求,生成一个请求命令(用HTTP POST方法发送请求)到不同的零售商处,所以这里问题的关键是要构造一个QueryString字符串。生成的QueryString字符串的形式如下:
http://WebServerName1/VendorDealXML1.asp?价格=20000&磁盘=4&监视器=15&CPU=300&内存=16&操作系统=Windows+98&鼠标=机械式&光驱=CDROM
2.VendorDealXMLx.asp文档实际上是由不同的零售商自己实现的,该文档对传进来的参数进行分析,并和数据库进行交互(这是数据服务层的内容,我们在第五部分有详细的描述),然后返回一个符合DTD定义的标准的XML文档。关于DTD的定义,在后面也有相关的说明。
3.函数AddXMLBody的分析
函数AddXMLBody的作用是从所有的零售商处得到查询的结果,并对结果进行合并,这个函数通过解析XML树的方法进行递归操作。这里的一个问题是为什么我们要解析返回的XML,然后在构建新的XML文档呢?首先,通过解析器我们可以验证从零售商处得到的XML文档的格式是否是正确的,其次,它可以保证零售商产生的XML文档没有其他和我们应用中无关的元素,第三,它可以使我们对零售商的XML文档进行方便的操作处理。对XML文档进行解析的基本流程可以用下面的伪代码表示:
遍历根节点下面所有的子节点
如果子节点不是一个元素节点(element node)的话,就跳过它得到子节点的属性
增加元素的开放标签(opening element tag)到strXML字符串中遍历该子节点下面的孩子节点
如果该子节点是一个文本节点的话保存它的值并退出循环
结束遍历
用子节点作为参数调用AddXMLBody,这是一个简单的递归操作.
增加所有的文本节点到strXML中去
增加所有元素的关闭标签(closing element tag)到 strXML
结束遍历
4. 在结束对零售商的XML文件的分析以后,最后的任务是发送结果到用户处。在发送结果到
| 对此文章发表了评论 |
