[英]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.