Xalan-C ++を使用してXSLT変換を実行していますが、次のコードでセグメンテーション違反が発生しています。
XalanTransformer evalTransformer;
evalTransformer.setUseValidation(false);
evalTransformer.transform(*(xmlDoc.getDocumentBuilder()), rule_, resultStream);
以前は、このコードを使用してXalanDocumentBuilderを初期化しました。
// Create a XalanTransformer.
XalanTransformer theXalanTransformer;
// Get a document builder from the transformer...
docBuilder_ = theXalanTransformer.createDocumentBuilder();
次に、を使用してXMLドキュメントを作成しますdocBuilder_
。したがってxmlDoc.getDocumentBuilder()
(これは単にを返しますdocBuilder_
)は有効なポインタを返す必要があります。
実行中のプロセスにgdbをアタッチすると、これはスタックトレースの最初の数行になります。
#0 0x0a2de894 in ?? ()
#1 0x0514f8d9 in amxalanc_1_6::XalanTransformer::doTransform () from /usr/lib/libamxalanc1_6.so
このtransform()
メソッドは単純な出力ストリームで機能していましたが、最初のパラメーターを変更すると失敗します。ドキュメントビルダーオブジェクトを使用して、XMLドキュメントを正常に作成しました。Xalanコード内でセグメンテーション違反が発生する理由はありますか?