2016-12-01 4 views
0

DeltaXML Core v7.1とそのJava API(PipelinedComparatorS9クラス)を使用してXML比較ツールを実装しています。異なるバージョンのSaxonを使用してDeltaXML Coreインスタンスを作成

私のコードはまず、独自のSaxon XSLTプロセッサ(v9.6.0.9)を使用して比較のためにXMLを前処理します。 Saxonプロセッサは、外部ライセンスファイルではなくコードでライセンスされた当社のOEMライセンスを使用しているため、DeltaXMLの内蔵プロセッサではなく、同じプロセッサをどのように使用できますか?あなたの質問に2つの別々の問題があります

答えて

0

:あなたはDeltaXMLコアで使用するSaxonプロセッサーの

1)バージョンは

DeltaXMLコアV7.1のAPIは、に至るまでサクソン9.3をサポートしていますSaxon 9.5(実際にはSaxon 9.5.1.5が配布に含まれています)。この範囲外のSaxonのバージョンが見つかると、 'サポートされていないSaxonのバージョン'例外がスローされます。コアの次のリリース(名目上は8.2)の目的は、Saxon 9.5からSaxon 9.7までをサポートすることです。ただしこれはまだ変更される可能性があります。残念ながら、これは、Coreの次のリリースまで、XSLTがSaxon 9.5と互換性があることを保証する必要があることを意味します。このようなXSLTの変更は、XSLT 3.0仕様の変更(現在の候補者勧告)に関連している可能性が最も高いです。 OEMを使用する方法

2)DeltaXML PipelinedComparatorS9とDocumentComparatorクラスは、両方の引数としてサクソンプロセッサのインスタンスを取るコンストラクタのオーバーロードを持っDeltaXMLコアと

をサクソンのバージョンのライセンスを取得。ここで引数として渡されるProcessorインスタンスは、ディストリビューションに含まれるプロセッサの代わりに、内部的にも使用されます。以下の簡略化された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); 
関連する問題