如今的XML,在文档生成方面可谓大红大紫。使用XML + XSLT可以动态生成HTML文档和表单。而XML + XSL + FO更可以动态生成PDF/RTF文档。
所谓动态生成,就是在运行,才将数据放到具有指定DTD/schema的XML文档中,使用预定义的XSL文档生成可供浏览或打印的文档。
一般来说,生成HTML和PDF的XSLT要分别定义。对于HTML和PDF表现差别较大的文档,有必要使用这种方法。
但是,对于一些格式要求较高的表单和报表,在HTML和PDF下的表现是基本一致的。这个时候就有必要用同一个样式表输出HTML和PDF。要知道,手工定义一份XSLT可是很费工夫的。
FO似乎能达到这个目标,它具备足够精细的样式定义,借助FOP等工具,可直接输出PDF等格式。可惜的是,目前的主流浏览器,如IE和firefox,并不能直接显示FO文档。必须将其转换成HTML或XHTML。然后,我没有发现任何的开源工具可以做到这一点。
Altove StyleVision,恰到好处的实现上述目标。
顾名思义,StyleVision就是用来设计样式表的,它提供一个非常友好的GUI设计界面。它使用一个私有的XML格式(SPS)来保存样式表,这个样式表可转换成生成HTML的XSLT和生成FO的XSLT。
这样,做为开发方,购买一份Altova StyleVision,用来设计样式表,然后将其生成的XSLT发布给用户,就可以实现同源输出报表了。而最终用户可以不购买Altova StyleVision
附图:两种动态文档生成方案(在图中体现为两条可选的路线):