0

システム データ (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 のメモリ ストリームをファイル ストリームに保存し、手動で変換を行うと、目的の出力が得られます。

この問題の根本原因を突き止めようとしていますが、うまくいきません。

このエラー メッセージの詳細は非常に役に立ち、非常に高く評価されます。

さらに情報が必要な場合はお知らせください。

よろしくお願いします

ラグー

4

1 に答える 1

0

コンパイラによって生成されたエラー メッセージが表示されていないようです。コンソールから実行していない場合は、XsltCompiler で ErrorList プロパティを設定し、例外が発生したときに、どこかでエラーを調べて表示します。たとえば、ログ ファイルに送信するか、エラーを含むウィンドウをポップアップします。

エラー メッセージを見ないと、エラーの内容を推測できません。

于 2013-10-12T15:55:53.327 に答える