0

C#(Visual Studio 2012)での XSLT2.0 変換に Saxon-9EE を使用しています。ただし、ソース ドキュメントの読み込み中にエラーが発生する場合があります (xml サイズは 25 MB です)。他のドキュメント (10 MB 未満) に対して同じコードを試してみましたが、うまくいきました。解決方法を教えてください。ありがとう

Method >>    End Copy Directory >>   3/28/2013 3:22:36 AM:857
 >>         at net.sf.saxon.dotnet.DotNetPullProvider.next()
   at net.sf.saxon.pull.PullFilter.next()
   at net.sf.saxon.pull.PullPushTee.next()
   at net.sf.saxon.pull.PullConsumer.consume()
   at net.sf.saxon.pull.PullPushCopier.copy()
   at net.sf.saxon.event.Sender.sendPullSource(PullSource , Receiver , ParseOptions )
   at net.sf.saxon.event.Sender.send(Source source, Receiver receiver, ParseOptions options)
   at net.sf.saxon.Configuration.buildDocument(Source source, ParseOptions parse
Options)
   at net.sf.saxon.Configuration.buildDocument(Source source)
   **at Saxon.Api.DocumentBuilder.Build(XmlReader reader)**
   at DocxCreator_XSL.DocxCreator.CreateDocx() in c:\Users\velagasx\Documents\Vi
sual Studio 2012\Projects\SampleProjects\DocxCreator_XSL\DocxCreator.cs:line 99
>>       3/28/2013 3:22:42 AM:745
4

1 に答える 1

1

最も単純で明白な説明は、(a) XML の形式が正しくない (または有効でない)、および (b) アプリケーションでのエラー処理が不適切である、というものです。スタック トレースの上部にあるルーチンは、Microsoft XML パーサーを呼び出して次のイベントを要求し、XML パーサーからの例外をテストしています。例外が発生した場合、これは Saxon.Api.DocumentBuilder.Build() のレベルで Saxon.Api.Exception の形式で現れるはずです。エラーの性質に関する基本的な情報がここにあるはずですが、何らかの理由で表示されていません。

Microsoft パーサーではなく、Apache Xerces パーサー (.NET 上の Saxon に組み込まれている) を使用してドキュメントを作成すると、より適切な診断が得られる可能性があります。これには、XPath id() および idref() 関数が適切に機能するという利点もあります。Microsoft パーサーを使用して作成されたドキュメントの場合は機能しません。M$ パーサーはアプリケーションに十分な情報を提供しないためです。 DTD。

于 2013-05-01T07:50:31.310 に答える