注册 | 登录 | 设为首页 | 加入收藏
您当前的位置:飞翔学院-IT中国 → IT资讯互联网 → 文章内容

用JavaScript扩展Microsoft XSLT处理器

作者:佚名 来源:不详 发布时间:2007-10-13 17:09:25

微软的XSLT处理器(MSXML)提供大量内建函数,它们划分为以下类别:

  • 数据类型转换
  • 算术,字符串处理
  • 集合
  • XML文档相关函数

此外,还可用微软提供的JavaScript版本——JScript——来编写自己的方法,从而扩展这一功能。但令人遗憾的是,要想执行你的扩展函数,必须解决大量问题,比如可能存在不同版本的MSXML。还需要在XML解析器面前隐藏JavaScript,使大于和小于比较运算能够进行,同时依然保持XSLT的良构状态。最后还得面对一个事实:没人真正费心将编写扩展函数的方式文档化。

Internet Explorer 5.0和更高的版本支持MSXML,但默认情况下,那个支持是针对版本2.0的,而MSXML的最新版本是4.0。版本2.0的MSXML只支持XSLT的工作草案。这意味着你要么强迫用户从微软下载MSXML 4.0,要么使用功能有限的XSLT的工作草案版本来编程,要么在服务器端进行转换。

除非开发一个内部网应用程序(你在其中可获得完全的控制),否则第一种方案不现实。由于MSXML 4.0不支持XSLT工作草案,所以第二种方案需要两个XSLT文档:一个用于版本2.0,另一个用于版本3.0或4.0。最后一种方案只适用于在服务器端执行的特定类型的转换。例如,要将ADO记录集转换成HTML select标记,就可在存放记录集的服务器端进行。

虽然编写扩展函数的过程尚未进行良好文档化,但通过不断试验和出错,也能了解一个大概。下面来看看我写的函数,并讨论我遇到的一些问题。

为加快速度而扩展MSXML

我扩展MSXML函数惟一的目的就是加快速度。我有许多大型XHTML select对象,它们相互依赖。选中一家特定的公司,可用产品就仅限于那家公司。此外,所选的产品决定了可用的型号。但我不希望公司或产品每次改变时,都去查询数据库。相反,我决定为存储在各自表格中的每种产品和型号都构造一个XHTML select对象,以后只显示相关的信息。

为确定公司、产品和型号的关系,我使用了option标记的value和id属性。来自公司(division)select对象的value属性对应来自产品(product)select对象的id属性。而且value属性对应来自型号(model)select对象的id属性。这样就可根据具体选择来动态改变选项。


  • 打印文档
  • 推荐好友
  • 返回顶部
  • 增大字体
  • 减少字体
关于本站 | 工作机会 | 合作网站 | 广告服务 | 市场合作| 联系我们 | 抽奖活动
版权所有: 武汉威俊科技有限公司 Copyright 2005-2007 www.ITCNW.COM All rights reserved