2012-12-02 51 views
3

我已閱讀其他帖子,他們不能解決我的問題。 環境是VB 2008(2.0框架) 以下代碼導致xslt.LoadXSLT Compile error 下面是錯誤的輸出。我將XSLT作爲字符串傳遞,因此不知道爲什麼我會收到錯誤信息。xslt.Load(新的XmlTextReader(新的StringReader(xslt)))「xslt編譯錯誤」

Public Function xFrmTlogs(ByVal sXLST As String, ByVal sXML As String) As String 
    Dim xslt As New XslCompiledTransform() 
    Dim HTMLoutput As String 
    Dim writer As New StringWriter() 

    Try 
     xslt.Load(New XmlTextReader(New StringReader(sXLST.ToString))) 
    Catch ex As Exception 
     xFrmTlogs = ex.ToString 
    End Try 

    Dim sourceReader As System.Xml.XmlReader = System.Xml.XmlReader.Create(New System.IO.StringReader(sXML)) 

    Try 
     xslt.Transform(sourceReader, Nothing, writer) 
    Catch ex As Exception 
     xFrmTlogs = ex.ToString 
    End Try 

    HTMLoutput = writer.ToString() 
    writer.Close() 
    xFrmTlogs = HTMLoutput 
End Function 

System.Xml.Xsl.XslLoadException:XSLT編譯錯誤。 (3,2)發生錯誤。 --- System.IO.DirectoryNotFoundException:找不到路徑'H:\ Program Files \ common \ tr_period.xsl'的一部分。在System.IO中的 .__ Error.WinIOError(Int32 errorCode,String maybeFullPath) at System.IO.FileStream.Init(String path,FileMode mode,FileAccess access,Int32 rights,Boolean useRights,FileShare share,Int32 bufferSize,FileOptions options , SECURITY_ATTRIBUTES secAttrs,字符串MSGPATH,布爾bFromProxy) 在System.IO.FileStream..ctor(字符串路徑,的FileMode模式,FileAccess的訪問,文件共享 份額,的Int32 BUFFERSIZE) 在System.Xml.XmlDownloadManager.GetStream(URI的URI ,ICredentials憑證) 在System.Xml.XmlUrlResolver.GetEntity(URI絕對URI,字符串的作用,類型 ofObjectToReturn) 在System.Xml.Xsl.Xslt.XsltLoader.CreateReader(URI URI,的XmlResolver的XmlResolver) 在System.Xml.Xsl.Xslt.XsltLoader.LoadStylesheet(URI的URI,布爾包括) 在System.Xml.Xsl.Xslt.XsltLoader.LoadInclude() 在System.Xml.Xsl.Xslt.XsltLoader.LoadRealStylesheet() 在System.Xml.Xsl.Xslt.XsltLoader.LoadDocument() 在System.Xml.Xsl.Xslt.XsltLoader.LoadStylesheet(的XmlReader讀取器,布爾包括) ---內部異常堆棧跟蹤的結尾--- 在System.Xml.Xsl.Xslt.XsltLoader.LoadStylesheet(XmlReader reader,Boolean include) at System.Xml.Xsl.Xslt.XsltLoader.Load(Compiler compiler,Object stylesheet,XmlResolver xmlResolver) at System.Xml.Xsl。 Xslt.Compiler.Compile(對象樣式表,XmlResolver xmlResolver, QilExpression & QIL) 在System.Xml.Xsl.XslCompiledTransform.CompileXsltToQil(對象的樣式表,XsltSettings 設置,的XmlResolver stylesheetResolver) 在System.Xml.Xsl.XslCompiledTransform.LoadInternal(對象的樣式表,XsltSettings 設置,的XmlResolver stylesheetResolver) 在系統.xml.Xsl.XslCompiledTransform.Load(XmlReader樣式表) at H:\ Documents and Files \ VfiSapphire.COMWrapper.xFrmTlogs(String sXLST,String sXML)Settings \ xxx \ My Documents \ Visual Studio2008 \ ProgramName \ ModuleName \ PdkBo.vb :行709

+1

「找不到路徑的一部分'H:\ Program Files \ common \ tr_period.xsl'」如果您在Windows資源管理器中鍵入該路徑,會發生什麼情況? –

+0

它試圖引用Web服務器上的文件.. \ common \ tr_period.xsl' – Xardoz

+0

然後我認爲「'。」「不是你認爲應該是的。這不是服務器的URL,而是文件路徑。 –

回答

0

存儲在sXSLT中的XSLT腳本可能包含<xsl:include><xsl:import>元素,它試圖在H:\Program Files\common\tr_period.xsl處包含/導入另一個XSLT腳本文件。由於該文件不存在或者無法訪問,轉換失敗。

+0

是的,這是問題! 它試圖訪問.XLS文件 該文件位於Web服務器上,我該如何解決該問題? – Xardoz

+0

tr_period.xsl文件實際上必須是XSLT文件,而不是Excel電子表格或任何其他文件。包含和導入命令用於包含來自其他文件的所有XSLT代碼,就好像它是同一文件的一部分一樣,本質上。因此,如果腳本不需要該文件來成功運行,則可以刪除該行。如果沒有,您可以修復路徑到文件的正確位置。 –

+0

我從Web服務器檢索XML和XLST。在XLST中有一個鏈接,,我已將該文件移動到本地硬盤上的目標中。解析不完整。我感謝你幫助我。 – Xardoz