saxon9EE - javax.xml.transform.TransformerConfigurationException:无法编译样式表

时间:2013-10-10 08:43:44

标签: vb.net saxon

我正在尝试将我们的系统数据(以xml格式)转换为已定义的输出xml文件。

要创建此输出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内存流保存到文件流并手动进行转换时,我们得到了所需的输出。

我们正试图找出这个问题的根本原因,但没有运气。

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

如果您需要更多信息,请与我们联系。

非常感谢提前

Raghu

1 个答案:

答案 0 :(得分:0)

看起来您没有看到编译器生成的错误消息。如果您没有从控制台运行,则在XsltCompiler上设置ErrorList属性,并在发生异常时检查并在某处显示错误,例如将它们发送到日志文件或弹出包含它们的窗口。

如果没有看到错误消息,我就无法猜出错误是什么。