使用Xalan进行XSLT程序设计
--IE5与Mozilla!
- 什么时候需要进行XSLT程序设计
- 关于IE5和Mozilla的基本背景知识
- Tomcat和jdk1.3的配置
- 第一个使用Xalan的程序的例子
- 术语与背景知识
- 使用javascript及其他语言扩展XSL
- 使用java扩展XSL
- 使用Xalan的命令行工具
- 在Applet中使用Xalan
- 调试(debug)一个xslt文档
- XSLTC
- DTM
IE5在很早就提供了对XSLT的最基本支持,但是由于各方面的原因,我们在这里将要使用的例子在IE5及以上版本中不保证能够运行。其中主要原因有三点。
- IE5使用的XSLT的名空间为http://www.w3.org/TR/WD-xsl,属于working draft(工作草稿),而Xalan使用的名空间是http://www.w3.org/1999/XSL/Transform,属于正式推荐标准。在安装了Microsoft
XML SDK3.0后这个新的名空间据说可以得到支持。
- IE5对元素缺省规则同Xalan支持现有标准冲突,现有标准需要为所有的元素提供一个缺省模板,这个缺省模板提取元素中的值。换句话说被标签包括的字符内容都会显示出来,但是属性会被忽略。而IE5的行为则正好相反,如果在xsl文件中没有为一个元素提供模板,那么该元素的内容不会显示出来。IE5的这个特性会对以后的发展造成巨大的麻烦,如果IE5的后续版本支持现有标准,那么现有的许多xml文件就无法在浏览器里面正确显示,如果IE5的后续版本不支持标准行为,那么IE只能被算作是非标准的支持xslt。换一个思路,如果xslt的标准为了ie而修改的话……这一点似乎不太可能发生。因为不但ibm,sun,apache不会赞成,负责xslt标准制定工作的的James
Clark也不可能同意。否则他就要重写他自己的标准处理器XT。我估计微软可能通过使用不同的名空间或者不同的mime类型的方法最终解决这个冲突。
- IE5支持的XSL文件的MIME类型为text/xsl而不是其他处理器(例如xalan,xt)支持的text/xml。另外需要我们引起注意的是,xsl的MIME类型在以后可能会变为application/xslt-xml,这个类型似乎更能体现xslt文件的作用,并且Xalan2.0.1已经开始支持这个mime类型。
IE5.5似乎没有在xslt方面对IE5作任何改变。但是Microsoft最近发布了XML SDK3.0,似乎有了很大的进步。不过Cyfer本人至今还没搞清楚到底安装成功了没有。所以也不好说有什么变化。
Mozilla将在0.9版中开始提供对XSLT的正式支持。在2000年十月,曾经有一个伴随M18版发行的支持MathML和XSLT的版本。不过由于Mozilla的xslt引擎实际上就是James
Clark写的XT,0.9版的Mozilla应该不存在支持XSLT版本落后或者支持不全面的问题。目前Cyfer使用的Mozilla版本是0.94+,感觉还不错。浏览本网站也最好使用Mozilla0.94版本以上的Mozilla浏览器,这样可以获得最好的功能方面的支持。但是Mozilla也仅仅支持text/xsl的mime类型,这让我感到很奇怪。下面的xml文件和xsl文件可以作为一个例子让大家理解xsl在mozilla中是如何工作的。
首先我们看看xml的源文件
你好
cyfer
有DVD吗?
cyfer
然后我们看看xsl源文件。
messages begin here:
来自的问候:
说:
最后我们那看看运行的结果图。很遗憾的是,这个例子没有能够在IE5.5上通过。左上角的是一个mozilla0.94+浏览器的窗口,旁边是源文件窗口。左下角是ie的窗口。两个的结果截然不同,而且很显然,ie5.5没有能够正确输出结果。后面是一个gvim的窗口,这是我常用的编辑器。
在Mozilla基础上开发的其他版本的浏览器也应该具有相应的功能。例如在Mozilla0.92基础上开发的Netscape Communicator
6.1和一些其他版本的浏览器。