我正在使用XMLCorev7.1及其Java API (PipelinedComparatorS9类)来实现一个DeltaXML比较工具。
我的代码首先使用我们自己的Saxon XSLT处理器(v9.6.0.9)预处理XML以进行比较。Saxon处理器使用我们公司的OEM许可证,在代码中激活,而不是通过外部许可证文件,那么我们如何使用相同的处理器而不是DeltaXML的内置处理器呢?
发布于 2016-12-02 00:25:44
在你的问题中有两个独立的问题:
1) 您要与DeltaXML核心一起使用的撒克逊处理器的版本
SaxonCorev7.1API支持从Saxon9.3到DeltaXML 9.5 (Saxon9.5.1.5实际上包含在发行版中)。如果发现此范围之外的Saxon版本,则会抛出“不支持的Saxon版本”异常。下一版本的核心(名义上是8.2)的意图是支持从Saxon 9.5到Saxon 9.7,尽管这仍然可能会发生变化。不幸的是,这意味着,在下一版Core发布之前,您需要确保XSLT与Saxon 9.5兼容。这样的XSLT更改很可能与XSLT 3.0规范(目前是候选推荐标准)的更改有关。
2) 如何在DeltaXML Core中使用Saxon的原始设备制造商许可版本
DeltaXML PipelinedComparatorS9和DocumentComparator类都有以Saxon处理器实例作为参数的构造函数重载。在这里作为参数传入的处理器实例也将在内部使用--而不是包含在发行版中的处理器。下面的简化Java代码展示了PipelinedComparatorS9的这种方法:
import net.sf.saxon.s9api.XdmNode;
import net.sf.saxon.s9api.Processor;
import com.deltaxml.cores9api.PipelinedComparatorS9;
Processor saxonProcessor= new Processor(true);
// invoke your own activation here:
Activator.activate(saxonProcessor);
XdmNode input1= loadInput1(saxonProcessor);
XdmNode input2= loadInput2(saxonProcessor);
PipelinedComparatorS9 pcS9= new PipelinedComparatorS9(saxonProcessor);
XdmNode resultNode= pcS9.compare(input1, input2);https://stackoverflow.com/questions/40915514
复制相似问题