因为看到Jeff说,xslt is not the solution you’re looking for.然后Umbraco(采用ASP.NET技术的开源CMS)也在V5.0版本不支持XSLT,而改用MVC方式去呈现页面。原文地址:
http://weblogs.asp.net/jeff/archive/2011/11/12/xslt-is-not-the-solution-you-re-looking-for.aspx
当然Jeff在这篇blog最后说到:XSLT is not your friend. It has a place in the world, but that place is tweaking XML, not rendering UI.大意是:XSLT是用来转换XML数据的,而不是呈现UI界面的。其实在微软和IBM看来,数据和界面都可以用XSLT去做,同时也包括Firefox,在推广它的XUL界面技术。以下我主要说说使用XSLT在转换数据的优点和缺点。当然国内很少有公司,完全采用XML+XSLT去转换数据,然后辅助采用CSS+DIV去render界面。
XSLT呈现数据
优点:大家都知道数据库有很多种,SQL Server,MySQL,DB2,Oracle是主流的几种,然后又MonoDb,VisitDB,数据库的种类也在随着时间的推移再增加。但是我们要把数据存储在数据库中,就需要指定数据的类型。每个数据库的数据类型都有所差异。未来,64位的产品出来之后,32位系统的数据可能不能直接存储到64位数据库系统中。所以考虑以上2个原因,很多大的公司,需要把数据存储为XML,然后再存储到数据库中。虽然增加了服务器成本,但是为以后的兼容性和可移植性提供了保证。这就是微软为什么一直在大多少产品要支持XML,同时数据库尽可能存储XML的格式。另外大家都知道XML和XSLT都是W3C的工业标准。所以数据库生成商在设计开发数据库时,都会实现XML的技术。所以当您的数据保存为XML格式存储在数据库中,导入到其他数据库时,相对而言要简单一些。当然现在市场有软件可以帮助实现数据库之间的导入。还有最初电子商务公司或者大的公司,数据之间的交互都使用XML,当然现在JSON格式很流行。所以XSLT作为一个有效的数据转换技术,所以就发展起来了。当然XSLT相比高级语言,C#,Java,PHP实在不足,这也是新来的同事抱怨,为什么一定要用XSLT去转换数据,直接用C#去做,那样多快。
缺点:
1.其实上面已经说到一点缺点,就是有时很多方法XSLT里面没有提供。说到这里就要说到XSLT版本的问题,XSLT目前有2个版本,1.0和2.0。微软虽然已经到了.net framework4.0,但是还仅支持XSLT1.0。所以你要在XSLT里面显示一个时间,比如2011-11-20,都是没有这个函数的哦!XSLT2.0应该是有的。幸好,微软在XSLT里面可以写C#代码,也可以传入XSLT Extension。这样可以弥补一些XSLT在比较通用函数的实现。
2. 因为XSLT技术不是简单的一门技术,在使用XSLT之前,开发人员必须会XPath。同时作为Web开发工程师,也必须会使用C#/Java/PHP去操作XML或者XSLT,所以学习成本很高,这也是XML+XSLT技术在中国不够普及的一个原因。
夜深了,这里只是谈谈个人的想法,当然大家也有想法。期待分享您的想法。
PS:我对Jeff的评论。
Our team still using the XLST+XML to render the data. Using the HTML+CSS+JavaScript to render UI.