2011-07-21 11 views
0

xslt2トランスフォームエンジンをsaxon 9.xでセットアップしました。大きなxmlファイルに大きなxsl変換ファイルがあります。私はXQSharp XSLT2エンジンで変換することができますが、サクソンと、私はエラーを取得しています:Saxon 9.xの詳細なエラーの説明を網で入手しよう

javax.xml.transform.TransformerConfigurationException: Failed to compile stylesheet. 1 error detected.

私は、エラーの行番号と原因例えばとサクソンからいくつかのより詳細なエラー情報を取得したいと思います。私が見つけたことができる唯一の2つの例外があります:

  1. Saxon.Api.DynamicError
  2. Saxon.Api.StaticError

しかし、彼らがスローされていません。どのように詳細なエラーの表記を取得するには?デフォルトのコンパイルエラーメッセージによって

<WebMethod()> _ 
Public Function XSLTSaxon(ByVal inputXml As String, ByVal inputXsl As String) As String 
     Dim response As String = "" 

     Try 
      ' Create a Processor instance. 
      Dim processor As New Processor() 

      ' Create xml reader based on xml string 
      Dim xmlReader As XmlReader = xmlReader.Create(New StringReader(inputXml)) 

      ' Load the source document. 
      Dim input As XdmNode = processor.NewDocumentBuilder().Build(xmlReader) 

      ' Create a transformer for the stylesheet. 
      Dim transformer As XsltTransformer = processor.NewXsltCompiler.Compile(New StringReader(inputXsl)).Load() 
      ' Set the root node of the source document to be the initial context node. 
      transformer.InitialContextNode = input 

      ' Create a serializer. 
      Dim serializer As New Serializer() 

      Dim result As Stream = New MemoryStream() 
      serializer.SetOutputStream(result) 

      transformer.Run(serializer) 
      result.Position = 0 
      Using reader As StreamReader = New StreamReader(result) 
       response = reader.ReadToEnd() 
      End Using 
     Catch ex As Saxon.Api.DynamicError 
      response = String.Format("<error>dynamicerror</error>", ex.ToString) 
     Catch ex As Saxon.Api.StaticError 
      response = String.Format("<error>staticerror</error>", ex.ToString) 
     Catch ex As Exception 
      response = String.Format("<error>{0}</error>", ex.ToString) 
     End Try 

     Return response 
End Function 

答えて

1

は、標準エラー出力ストリームに書き込まれます。

は、私は次のコードを持っています。これが.NET上で終わる場所は、コマンドラインコンソールから実行していない場合は謎のようなものです。システムのどこかに埋め込まれたログファイルになると思いますが、おそらく設定可能です。アプリケーションのエラーを処理する最も柔軟な方法は、XsltCompilerのErrorListプロパティを使用することです。このプロパティを空のリストに設定すると、SaxonはStaticErrorオブジェクトとしてエラー情報をリストの最後に追加します。アプリケーションはそれを検索し、最適な場所に表示することができます。

SaxonのSourceForgeページに行くと、Saxonの質問のフォーラムとメーリングリストがあることにご注意ください。それらの場所のいずれかに投稿された質問は常に答えを得るでしょう。 StackOverflowはすばらしい場所ですが、あなたの質問が気付かれるかどうかは不思議です。

+0

エラーリストがトリックでした。ありがとう – MLewi

関連する問題