Xalan XSLT将HTML输出流式传输到浏览器

时间:2013-11-27 08:31:21

标签: java xml xslt xalan

我们正在使用Xalan XSLT进行XSL转换以生成HTML输出,即XML + XSL = HTML。

以下是代码。

out=response.getOutputStream();
TransformerFactory factory = TransformerFactory.newInstance();
Transformer transformer = factory.newTransformer()
transformer.transform(new StreamSource(in), new StreamResult(out));

我不希望在浏览器上显示数据之前完成整个转换。我希望具有HTML输出的StreamResult开始向浏览器发送数据,因为它在各个XML节点/ XSL应用模板上执行xsl转换,以便用户在生成时获得在浏览器上显示的内容,因为它是可能的对于报告XML来说很重要。

我如何实现这一目标? Xalan XSLT支持吗?是否有任何其他XSLT解析器支持它。

我很感激你的意见。

1 个答案:

答案 0 :(得分:0)

简短的回答是否定的,用Xalan来实现这一目标是不可能的。

编辑:但是,有可能对撒克逊人进行扩展 - 看看它们。

至于更长的答案,XSLT处理器的流功能已经取得了一些进展,但结果似乎太难以预测了。例如,请参阅此链接:http://www.balisage.net/Proceedings/vol5/html/Kay01/BalisageVol5-Kay01.html,了解尝试在Saxon中实现Streaming。

假设XSLT 3.0建议书将包含这个问题:

  

此版本语言更改的主要目的是   在流模式下执行转换,其中   源文件和结果文件都没有被保留   记忆全部。

有关详细信息,请参阅http://www.w3.org/TR/xslt-30/。不过,这只是一份工作草案。

编辑:特别是对于Xalan的流媒体,Michael Kay写道:

  

Xalan中的增量转换实际上并没有阻止它的建立   整个源文件作为记忆中的一棵树;它只是允许   要与转换过程并行构建的树。如果   你想要一个流媒体转型,Saxon-EE是你唯一实用的   选项。 [...]

这取自2012年的Incremental/streaming XSLT transformations?。似乎StreamSource似乎不是流式传输。