私はXSL変換
を使用してJavaでXMLSにXSL変換を適用する方法を認識していたjavax.xml.transform.Transformer
このアプローチは、小さなXMLに適していますデータ。しかし、メモリの制約のためにDOMベースのアプローチを使用することが難しい大規模なXMLデータに関しては、これは悪夢になります。
大規模なXMLにXSL変換を適用するための最良の方法は何ですか。 DOMではなくSAXで動作するトランスはありますか?
私はXSL変換
を使用してJavaでXMLSにXSL変換を適用する方法を認識していたjavax.xml.transform.Transformer
このアプローチは、小さなXMLに適していますデータ。しかし、メモリの制約のためにDOMベースのアプローチを使用することが難しい大規模なXMLデータに関しては、これは悪夢になります。
大規模なXMLにXSL変換を適用するための最良の方法は何ですか。 DOMではなくSAXで動作するトランスはありますか?
Javaでは、JAXPを実装するXSLTプロセッサの実装が異なります。 Saxon 9.3はXSLT 2.0プロセッサであり、XSLT 3.0の作業用ドラフトの一部のストリーミング機能も実装しています(http://www.saxonica.com/documentation/sourcedocs/streaming.xmlを参照)。 最新のSaxon 9.3の最新の機能を使用しない場合でも、通常はDOMSourceをプロセッサに供給せずに、プロセッサにStreamSourceを供給してツリー実装を使用させることをお勧めします。
http://www.ling.helsinki.fi/kit/2004k/ctl257/JavaXSLT/Ch05.html –
巨大なXSLTで作業している場合や、複数のXSLTを使用して作業している場合は、パフォーマンスを向上させるためにxsltをコンパイルしてキャッシュするのが良い方法です。この記事では、方法を説明しますcache xslt's
大きなXMLを小さなチャンクに分割することを検討してください。 –