xsl:message の出力を既存のアプリケーションにキャプチャする機能を追加したいと考えています。トランスフォーマーに messageListener を追加するための簡単な参照が見つかりましたが、私のアプリはテンプレート オブジェクトを生成する saxTransformerFactory.newTemplates() で構成されており、これを使用して xmlfilter "XMLFilter xmlFilter = saxTransformerFactory.newXMLFilter(templates);" を作成します。「MessageListener を実装する」クラスを追加するにはどうすればよいですか?
質問する
262 次
2 に答える
1
TransformerFactory および関連するクラスは、XSLT プロセッサを呼び出すための製品に依存しない API (JAXP または Trax と呼ばれることもあります) です。MessageListener は、Saxon 製品に固有のものです。MessageListener は、JAXP Transformer の Saxon 実装である Saxon の Controller オブジェクトに登録できます。JAXP Transformer がある場合は、Transformer を Saxon Controller にキャストしてから、setMessageListener を呼び出す必要があります。XMLFilter を Saxon で使用すると、XMLFilter は net.sf.saxon.Filter のインスタンスになります。これには、Controller を返す getTransformer() メソッドがあります。
于 2013-04-26T18:33:55.853 に答える
1
マイケル・ケイが説明したように、Javaコードでさらに詳しく説明します;-)
TransformerFactory factory = TransformerFactory.newInstance();
Transformer transformer = factory.newTransformer(xslt);
if (transformer instanceof TransformerImpl) {
//saxon specific
TransformerImpl timpl = (TransformerImpl) transformer;
XsltTransformer saxonTransformer = timpl.getUnderlyingXsltTransformer();
saxonTransformer.setMessageListener( ...your listener... );
}
于 2017-03-22T22:28:46.907 に答える