我有一个使用这个Saxon命令创建的编译样式表:
java net.sf.saxon.Compile [options] stylesheet output [params ...]
我现在想将这个样式表应用到我的Java代码中的XML树中。是否可以使用JAXP API执行此操作,如果是这样,具体如何?非常感谢您提供任何帮助。
答案 0 :(得分:3)
首先,请注意,此设施并不总能满足人们的需求。有许多限制 - 您可以在样式表中执行以防止其可编译的事项。许多人在使用此功能时都会遇到性能预期。因此,在Saxon 9.4中,我们完全撤回了它。
运行已编译的样式表时,最大的限制是它无法与其他任何东西共享配置 - 它必须独立运行。这是NamePool工作方式的结果。因此,如果您尝试从Java API执行此操作,那么您有责任将其做好。
加载已编译样式表的关键是静态方法
PreparedStylesheet.loadCompiledStylesheet()
使用JAXP接口无法做到这一点。然而,它返回一个PreparedStylesheet对象,它是Saxon对JAXP Templates对象的实现,一旦你有了这个对象,就可以使用JAXP接口创建一个Transformer并运行转换。