2012-06-13 30 views
2

我正在處理涉及XSLT的項目。並希望在我的XSLT中使用C#腳本。 就像在下面的鏈接。 XSLT 1.0 Get Current DateTime是否在.NET 2或.NET 4中修復了msxsl內存泄漏錯誤?

雖然我遇到這個知識庫文章http://support.microsoft.com/kb/316775,說這會導致內存泄漏多次加載樣式表。

知識庫文章並未說明哪些.NET版本受到影響。任何人都可以建議是否在.NET 2.0或更高版本中修復了這個問題?

我的目標環境具有.NET 2.0和3.5,但執行XSLT轉換的代碼已編譯爲.NET 2.0。

注意:我無法控制運行轉換的代碼。我只能寫XSLT

回答

2

這不是一個錯誤 - 首先。

更重要的是,這是絕對可以避免的。

解決的辦法是有內嵌腳本,但是使用包含有用的擴展功能的擴展對象。

更多信息如何寫擴展函數作爲擴展對象的一部分 - 用於XslCompiledTransform可以在這裏找到:

http://msdn.microsoft.com/en-us/library/tf741884

和全碼例如這裏:

http://msdn.microsoft.com/en-us/library/system.xml.xsl.xsltargumentlist.addextensionobject

+0

嗨Dimitre, 感謝您的回覆... 我已經考慮過您提到的方法。但我希望我的C#代碼在不重新編譯的情況下可以更改。 (另外,我無法控制運行轉換的代碼,我只是在編寫XSLT)我也考慮過使用EXSLT庫,但似乎.NET中構建的類不支持它。 – Madushan

+0

@MadushanSiriwardena:如果你沒有控制權,你必須與代碼啓動轉變的人合作 - 他們顯然知道你的轉型。你想用內聯擴展實現什麼 - 也許在純XSLT 1.0中是可以實現的? –

+0

對不起,我的意思是我們使用第三方通用工具來運行XSLT作爲更大系統的一部分。所以我不太可能要求這個工具的開發者改變它。 我試圖讓系統日期進入轉換的結果。 – Madushan