[英]Xalan XSLT Stream HTML output to browser
我们正在使用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解析器支持它。
非常感谢您的建议。
简短的答案是“否”,使用Xalan不可能可靠地实现这一目标。
编辑 :但是,有可能与撒克逊人的扩展-看看他们。
至于更长的答案,XSLT处理器的流功能已经取得了一些进展,但是结果似乎还无法预测。 例如,请参见以下链接: http : //www.balisage.net/Proceedings/vol5/html/Kay01/BalisageVol5-Kay01.html ,以讨论在Saxon中实现流式传输的尝试。
假定XSLT 3.0建议书将包含以下问题:
对该语言版本进行更改的主要目的是使转换能够以流模式执行,在这种模式下,源文档和结果文档都不会完全保存在内存中。
有关更多信息,请参见http://www.w3.org/TR/xslt-30/ 。 不过,这只是一个工作草案。
编辑 :特别是对于Xalan的流,Michael Kay写道:
Xalan中的增量转换实际上并没有阻止它将整个源文档构建为内存中的树。 它所做的只是允许在转换过程中并行构建树。 如果您想进行流媒体转换,那么Saxon-EE是您唯一可行的选择。 [...]
这取自增量/流XSLT转换? , StreamSource
2012年。似乎StreamSource
确实不是流媒体。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.