对一群Web开发者提到客户面XML时,其大多数都会想到微软的Internet Explorer,以及MSXML2与MSXML3中的二者之一。但就客户面XML支持其本身来说,如今我们多了一种名为Gecko的选择。不能仅仅因为没有人在你面前赞扬Mozilla和 Netscape的XML支持特性就认为这样的支持并不存在。事实上,Gecko支持XML, XSLT, XPath, XMLHTTP, SVG (Scalable Vector Graphics) 和MathML。仅存的遗憾在于Gecko的XML支持特性几乎无人知晓,而我希望通过我的努力使此局面有所改善。
JavaScript and XML
由于Gecko像XML data islands一样,并不依赖于非标准扩展名,所以唯一调用Gecko的XML强大功能的方法是使用JavaScript (ECMAScript)。这样使用JavaScript其中一个优点在于如果在试图获得一种方法时出了问题,这时常会有另一种方法完成这项工作。另一个例子是第一次装载XML文档会相对简单。在我使用Mozilla时,我发现了三种无需费多少劲便可装载一个XML文档的方法。
装载XML文档
第一种方法是强制编译文档。这类文档使用XML DOM程序化地创建了XML文档节点。这种方法的问题在于如Listing A所示,它不够灵活。对文档的每次改变都需要更改JavaScript。当这项工作会在几年后引发工作安全问题时,谁还会想要? 第二种装载XML文档的方法更常见些,即简单的使用XML DOM的装载方法。这有点类似于装载Microsoft MSXML,但仍有所不同。第一点区别在于Gecko既不支持微软的async extension也不支持XML DOM。所以,不同于JavaScript停下来“玩儿手指”般等待文档装载或检查readystate,Gecko使用一种事件装载处理程序。一旦如Listing B 所示,文档被装载并能继续处理下去,事件装载处理程序就开始工作。
相关软件
最后装载XML文档的方法是针对象我这样打算让JavaScript能“玩儿手指”般等待文档装载者的。没有使用装载的办法,XMLHTTP被用来如 Listing C 所示载入文档。其结果非常类似于微软的async特性。
下一步是什么?
不管使用什么方法,当XML文档已经被装载后,现在的问题是怎样处理它?由于Gecko支持XSLT,一种办法是迅速创建XHTML以大幅增加DHTML的动态部分。另一种可能是使用SOAP来访问服务器上的Web服务。从根本上看,下一步做什么的唯一限制只是你的想象力。
责任编辑:李宁
欢迎评论或投稿
|