运用XSLT从ADO的记录集动态创建HTML对象

ZDNet软件频道 时间:2002-11-06 作者:BUILDER.COM |  我要评论()
本文关键词:
ADO、XML和XSLT的运用使我们的代码具有了巨大的灵活性。本文的例子是用VBScript书写的。

扩展样式表单转换语言(XSLT)规定了将一份XML文档转换为另一份不同的XML文档或其它文档(如HTML文档)的规则。为了理解它是怎样工作的,我们用典型的ASP方法-循环查找整个记录集来创建一个HTML选项。其代码如Listing A所示。

看起来很熟悉吗?Listing A里的程序使你觉得很自然吧。Listing B向你演示了怎样用XML和XSLT来获得同样的效果。

就好像变魔术一样,不是吗?没有循环结构,没有move next语句-但它们的工作原理却不是那么显而易见的,哪怕你对XML很熟悉。那么,就让我们一行一行地来分析它究竟做了些什么:

  • 前两行创建了XML文档对象模型的实例,一个是XML的记录集objXML,另一个是XSLT的记录集objXSL。
  • 第三行调用了ADO的save方法将整个源记录集作为一份XML文档保存。
  • 第四行从服务器装载XSLT记录集select.xsl到objXSL。
  • 第五行将XML记录集转换为HTML选择表单并把它装入objXML中。
  • 最后一行输出已转换为HTML的XML文档。

整个过程好像看起来太简单了?好,我对第三行和第四行-将记录集保存为XML格式并且装入XSLT记录集,作部分解释。将记录集保存为XML格式是直截了当的操作,但是保存后到底变成什么样子却不是那么清楚。

当你将记录集保存为XML时,ADO将记录集的名字空间和结构描述都包含进来,还有那些记录集里的记录行。一开始,所有这些信息好像显得太多了。另外,每一个记录行都被保存为具有单独属性列的XML元素。然而这不是问题所在,当书写XSLT时记住这些规则会使文档安排得更好。

知道了这些,让我们抓住第四行。XSLT将XML转换成另一种类型的文档。一个大的区别是为XSL的名字空间附加的xmlns:xsl=”http://www.w3.org/1999/XSL/Transform”,它把以xsl:开头的标注识别为XSLT的指令、元素和属性。由于我们使用的是XML文档并且是从ADO的记录集开始的,那这份样式表单就需要更多的名字空间,因此产生了Listing C那样的代码。

如果你想使用ADO记录集,你都得像这个例子这样开始。如果你想建立一个HTML选项或者表单,你也要从这里开始。more goes here处是真正的关键;建立HTML选项和表单的逻辑就在这里。

Listing D中,我们又回到了Listing C的<!--more goes here-->处。

改变more goes here的内容,可以得到不同的结果。你可以生成一个HTML表单来替代HTML选项。例如,Listing E中的代码可以生成一个包含由不同数字组成的列的表单。如果记录集有两列,表单就有两列;如果记录集有五列,表单也会有五列。不论记录集包含多少列,表单的列数都和它相同。这个例子设计上唯一的缺点是,它不能处理具有空列数的源记录集。

结论

ADO、XML和XSLT的运用使我们的代码具有了巨大的灵活性。我的例子是用VBScript书写的,并运行在一台服务器上,但是你可并没有被限制在一种特定的平台上。例如,一旦ADO记录集被保存为XML格式,它就能被传送到客户端的浏览器上并被转换为HTML格式。所以,我们可以很容易地理解为什么XML与XSLT一起能够迅速地成为联机业务的宠儿。



责任编辑:炒饭

欢迎评论或投稿


百度大联盟认证黄金会员Copyright© 1997- CNET Networks 版权所有。 ZDNet 是CNET Networks公司注册服务商标。
中华人民共和国电信与信息服务业务经营许可证编号:京ICP证010391号 京ICP备09041801号-159
京公网安备:1101082134