我有一個用saxon 9.x設置的xslt2轉換引擎。我有一個很大的xml文件和大的xsl轉換文件。我可以與XQSharp XSLT2引擎變換,但與撒克遜我得到錯誤:在.net中從Saxon 9.x獲取詳細的錯誤描述
javax.xml.transform.TransformerConfigurationException: Failed to compile stylesheet. 1 error detected.
我想獲得來自撒克遜與錯誤和原因的例如行號的一些更詳細的錯誤信息。我能發現的唯一的兩個例外是:
- Saxon.Api.DynamicError
- 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
ErrorList做了伎倆。謝謝 – MLewi