Xml 哪个XSLT处理器同时支持XSLT2.0和StatxSource?

Xml 哪个XSLT处理器同时支持XSLT2.0和StatxSource?,xml,xslt,saxon,stax,Xml,Xslt,Saxon,Stax,我花了很多时间试图找到一个TransformerFactory来支持StatxSource,因为我的输入是XMLStreamReader,而StatxSource似乎是最合适的。最终,我遇到了以下问题,并且成功了: TransformerFactory.newInstance( "com.sun.org.apache.xalan.internal.xsltc.trax.TransformerFactoryImpl", null); 现在我发现自己尝试使用以下分组,并成功地为每个组使用了

我花了很多时间试图找到一个
TransformerFactory
来支持
StatxSource
,因为我的输入是
XMLStreamReader
,而
StatxSource
似乎是最合适的。最终,我遇到了以下问题,并且成功了:

TransformerFactory.newInstance(
    "com.sun.org.apache.xalan.internal.xsltc.trax.TransformerFactoryImpl",
null);
现在我发现自己尝试使用以下分组,并成功地为每个组使用了
xsl:for
()。然后我发现上面的
TransformerFactory
不支持XSLT2.0,并且我不知道如何应用Muenchian分组(我希望将输入转换为输出)

我希望能够支持XSLT2.0,因此我放弃了与门钦分组斗争的概念。我发现SAXON支持XSLT2.0

TransformerFactory factory = TransformerFactory.newInstance(
    "net.sf.saxon.TransformerFactoryImpl",
null);
唉,它不支持
statxsource
。是否有支持XSLT 2.0和
statxsource
的XSLT处理器

作为替代方案,是否有一种方法可以将XMLStreamReader转换为SAXON可以支持的东西(例如
StringReader
for
StreamSource


最后一种方法是找出这个Muenchian分组并将XSLT 2.0完全打折,但我不喜欢这个想法。

事实证明,在我提出这个问题后不久,我找到了解决方案:

SAXON非常棒,实际上支持从
XMLStreamReader
读取,只是不使用
StatxSource
。我发现了一个例子,它解释了为什么
statxsource
在没有得到广泛支持的情况下仍然存在,并提供了一个可行的替代方案

因此,与其使用:

Source source = new StAXSource(xmlStreamReader);
我使用了以下方法:

StaxBridge bridge = new StaxBridge();
bridge.setXMLStreamReader(reader);
Source source = new PullSource(bridge);

我有一个XSLT处理器,可以与
XMLStreamReader
一起工作,支持XSLT 1.0和2.0。

您还没有说您使用的是哪个版本的Saxon。9.5的单元测试演示了使用StatxSource的成功操作——我刚刚检查过。这在内部有点棘手,因为StaxSource在JDK1.5中不可用,代码必须在1.5中运行,所以它使用反射;但它应该会起作用。

这是一个很好的观点。我一直在部署WSO2ESB4.8.1,所以我当时还不知道。我四处寻找,发现了一个
Saxon9he.jar
。现在还不清楚是哪一个小版本,但是,当我尝试使用StatxSource时,看到它会呕吐,我想冒昧地猜测一下,它不是9.5。不过,您对JDK1.5的看法很有趣。我使用的是JDK1.7,恢复不是一个选项。好消息是,基于您对Nabble的一个回复,PullSource同样有效,所以这不是一个大问题。谢谢您可以通过命令行上的-t找到您正在使用的版本,或者执行“java-cp saxon9he.jar net.sf.saxon.version”。谢谢Michael。我正在使用“SAXON 9.4.0.4 from Saxonica(build 062515)”。然后我建议继续前进。