2013-10-10 36 views
0

我想将我们的系统数据(以xml格式)转换为定义的输出xml文件。saxon9EE - javax.xml.transform.TransformerConfigurationException:无法编译样式表

要创建此输出xml,我计划使用XSLT版本2.0。因此,我使用Saxon EE评估版(SaxonEE9-5-1-2版本)

我试图向我的团队演示此软件,从而购买该软件并使用XSLT 2.0,XQuery等的功能和特性

目前我正在做一个原型项目 - 我遇到问题。

VB.NET转型代码如下:

Dim strXSLT As String = String.Empty 
    Dim strXML As String = String.Empty 

    'Retrieve data from database as string 
    strXML = GetData() 

    Dim processor As Saxon.Api.Processor = New Saxon.Api.Processor() 
     Dim builder As Saxon.Api.DocumentBuilder = processor.NewDocumentBuilder() 

    'Retrieve XSLT file content from database as string 
    strXSLT = GetXSLT() 

    'Convert XSLT string data as memorystream 
     Dim byteDataXSLT() As Byte 
     byteDataXSLT = System.Text.Encoding.UTF8.GetBytes(strXSLT) 
    Dim msXSLT As New System.IO.MemoryStream(byteDataXSLT,0, byteDataXSLT.Length) 

    'Convert XML string data as memorystream 
     Dim byteDataXML() As Byte 
     byteDataXML = System.Text.Encoding.UTF8.GetBytes(strXML) 
    Dim msXML As New System.IO.MemoryStream(byteDataXML,0, byteDataXML.Length) 

    'Save the xml file before processing 
    Dim fsXML As New System.IO.FileStream("C:\Temp\XML.xml", System.IO.FileMode.OpenOrCreate) 
    Dim byteFileXML() As Byte 
    byteFileXML = msXML.ToArray() 
    fsXML.Write(byteFileXML, 0, byteFileXML.Length) 

    'Save the xsl file before processing 
    Dim fsXSLT As New System.IO.FileStream("C:\Temp\XSL.xslt", System.IO.FileMode.OpenOrCreate) 
    Dim byteFileXSLT() As Byte 
    byteFileXSLT = msXSLT.ToArray() 
    fsXSLT.Write(byteFileXSLT, 0, byteFileXSLT.Length) 

    Dim sURI As New Uri("file:///C:/") 

    builder.BaseUri = sURI 


    Dim input As Saxon.Api.XdmNode = builder.Build(msXML) 
    Dim transformer As Saxon.Api.XsltTransformer = processor.NewXsltCompiler().Compile(msXSLT).Load() 

     transformer.InitialContextNode = input 
     Dim serializer As New Saxon.Api.Serializer() 
     serializer.SetOutputFile(strOutputFileName) 
     transformer.Run(serializer) 

我收到以下错误下面一行,只有当我通过程序运行。当我手动进行转换时,我没有收到此错误。

Dim transformer As Saxon.Api.XsltTransformer = processor.NewXsltCompiler().Compile(msXSLT).Load() 

错误消息:

saxon9ee javax.xml.transform.TransformerConfigurationException: Failed to compile stylesheet. 

但是当我保存在XML和XSLT的MemoryStream到FILESTREAM和做手工改造,我们得到所需的输出。

我们正试图弄清楚这个问题的根源,但没有运气。

有关此错误消息的任何详细信息都会非常有用,非常感谢。

如果您需要更多信息,请让我知道。

提前

Raghu

回答

0

非常感谢您似乎没有看到由编译器产生的错误信息。如果您没有从控制台运行,那么请在XsltCompiler上设置ErrorList属性,并在发生异常时检查并显示某处的错误。将它们发送到日志文件或弹出包含它们的窗口。

没有看到错误信息,我无法开始猜测错误可能是什么。