我花了很多時間試圖找到TransformerFactory
,這將支持StAXSource
,因爲我的輸入是XMLStreamReader
和StAXSource
似乎是最合適的。最後,我遇到了以下和它的工作:哪個XSLT處理器支持XSLT 2.0和StAXSource?
TransformerFactory.newInstance(
"com.sun.org.apache.xalan.internal.xsltc.trax.TransformerFactoryImpl",
null);
現在我發現自己嘗試使用以下this SO answer分組,並使用xsl:for-each-group
(pastebin)取得了成功。後來我發現,上述TransformerFactory
不支持XSLT 2.0,我不能工作了如何申請Muenchian分組的(我想this輸入轉化爲輸出的this)
我希望能夠支持XSLT 2.0,所以我放棄了與Muenchian分組掙扎的想法。我發現,SAXON支持XSLT 2.0
TransformerFactory factory = TransformerFactory.newInstance(
"net.sf.saxon.TransformerFactoryImpl",
null);
唉,不支持StAXSource
。是否有任何支持XSLT 2.0和StAXSource
的XSLT處理器?
作爲替代方法,是否有將XMLStreamReader轉換爲SAXON可以支持的方法(例如,對於StreamSource
,A StringReader
)?
最後的方法是找出這個Muenchian分組和完全折扣XSLT 2.0,但我不喜歡這個想法。
好點。我一直在部署到WSO2 ESB 4.8.1,所以我不知道如何。我挖了一遍,發現了一個'Saxon9he.jar'。目前還不清楚什麼是次要版本,但是當我嘗試使用StAXSource時發現它會發生變化,我會冒險猜測它並不是9.5。你對JDK 1.5的評論很有趣。我正在使用JDK 1.7,並且還原不是一個選項。好消息是PullSource的工作原理也是基於您對Nabble的迴應之一,因此這不是一個主要問題。謝謝! – Roberto
您可以在命令行中使用-t找到正在使用的版本,或執行「java -cp saxon9he.jar net.sf.saxon.Version」。 –
謝謝邁克爾。我正在使用「Saxonica的SAXON 9.4.0.4(build 062515)」。 – Roberto