我花了很多时间试图找到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