XslTransform似乎已被Microsoft棄用,轉而使用XslCompiledTransform。從理論上講,如果我在執行應用程序時只做了一次轉換,不應該通過XSLT解析XSLT比編譯它快嗎?如果是這樣,XslTransform寫得如此糟糕,以至於對XslCompiledTransform所作的改進不僅僅是彌補它?XslTransform與XslCompiledTransform
6
A
回答
4
2
好了,你有(慢)運行的XslTransform主場迎戰XslCompiledTransform加上其(快)運行時間的編譯時間時間。沒有理論的方法來決定這個比較。
理論認爲:運行時間取決於輸入所需的操作和編譯時間取決於XSLT的複雜性。實踐證明,通過簡單的輸入和複雜的XSLT,一次執行XslTransform肯定會更快。
然而,對於所有的實際應用中,你會想,如果只XslCompiledTransform爲事實的XslTransform被棄用,很可能含有缺陷,永遠無法修復。實際上我有一些樣式表在XslTransform下行爲異常,並且在XslCompiledTransform下完美運行。
1
以來的XslTransform折舊並且可以從框架的未來版本中刪除你應該在任何情況下使用XslCompiledTransform。
2
到無關的數據點,我只是浪費了幾個小時的調試用於正常工作,不再做了XSLT。結果發現XSLT沒問題,問題在於應用它的代碼從XslTransform(完美工作)更新到XslCompiledTransform(它很糟糕地轉換它),並且引發了錯誤。
所以,不愉快的XslTransform將過時,在這裏,我只是要恢復到使用它的代碼... :(
0
兩者都有自己的優點和缺點。我使用的,但兩者在不同的場景。我使用的XslTransform通過輸出到一個XML控制變量,並寫在字面上的控制輸出,但是當我需要傳遞給網頁XML控制,然後我需要XslCompiledTransform,這是因爲這兩種方法的輸出是不同的。
System.Web.UI.WebControls.Xml objXML = new System.Web.UI.WebControls.Xml();
System.IO.StringWriter objTextWriter = new System.IO.StringWriter();
System.Web.UI.HtmlTextWriter objHtmlTextWriter = new System.Web.UI.HtmlTextWriter(objTextWriter);
XslTransform objTrans = new XslTransform();
objTrans.Load(HttpContext.Current.Server.MapPath(strXslFileName));
objXML.TransformArgumentList = objArgsList;
objXML.Transform = objTrans;
objXML.Document = objOutputXml;
objXML.RenderControl(objHtmlTextWriter);
return objTextWriter.ToString();
XslCompiledTransform objTrans = new System.Xml.Xsl.XslCompiledTransform();
System.IO.StringWriter objStringReader = new System.IO.StringWriter();
objTrans.Load(HttpContext.Current.Server.MapPath(strXslFileName));
objTrans.Transform(objOutputXml, objArgsList, objStringReader);
return objStringReader.ToString().Replace("<br>", "<BR/>");
相關問題
- 1. XslTransform到XslCompiledTransform
- 2. 如何從遷移到的XslTransform XslCompiledTransform
- 3. MSXML:與XslCompiledTransform
- 4. XslCompiledTransform
- 5. XSLTransform to MemoryStream
- 6. xslTransform with xml-stylesheet
- 7. 梅辛與編碼和XslCompiledTransform
- 8. C#Parallel.ForEach XslCompiledTransform與Saxon 9.7.0.6 HE
- 9. XslCompiledTransform與對象和XSLT
- 10. XslTransform類的替代方案
- 11. XslCompiledTransform與XSLT 1.0毫秒:format-time()時區
- 12. 獲得使用XslCompiledTransform
- 13. XslCompiledTransform輸出爲XPathDocument
- 14. System.Web.UI.WebControls.Xml使用XslCompiledTransform嗎?
- 15. 未使用XslCompiledTransform調用XmlResolver
- 16. XslCompiledTransform使用UTF-16編碼
- 17. 設置XslCompiledTransform輸出設置
- 18. 在c#中實現exslt.dynamic.evaluate(XslCompiledTransform)
- 19. XslCompiledTransform在xsl上失敗:import
- 20. XslCompiledTransform失敗,堆棧溢出
- 21. XElement和XslCompiledTransform存在問題
- 22. XslCompiledTransform從XmlDocument的到的XmlDocument
- 23. 使XslCompiledTransform忽略腳本
- 24. XslCompiledTransform失敗的XSLT與許多xsl:當條件
- 25. XslCompiledTransform變換方法不起作用
- 26. XslCompiledTransform轉換調用導致DTD崩潰
- 27. VB.NET中的XslCompiledTransform和xslt存在問題
- 28. XslCompiledTransform換行符,如何輸入它們?
- 29. 使用XslCompiledTransform轉換兩個xml文件
- 30. XslCompiledTransform最快的內存緩存
它尚未被標記爲「過時」,但是... – 2012-03-20 14:05:44
現在標記爲過時 – 2017-03-10 11:45:34