I have the following code that I need to port from VS 2003 (.Net 1.1) to VS 2008 (.Net 2+) but I get a compilation error -
System.Xml.Xsl.XslTransform 'is deprecated: this class is deprecated. I probably need to use System.Xml.Xsl.XslCompiledTransform. but I canβt find suitable versions of Load () and Transform () overload, which I can use with all parameters of my source code.
at MSDN [Practical Guide. XslTransform code porting] I found only a few simpler cases. http://msdn.microsoft.com/en-us/library/aa983475%28VS.80%29.aspx but in my code I see a few comments that the added parameters were used to throw exceptions, so I prefer to use these parameters .
Can someone help me migrate this code?
Thank you Atar
' ---------------------------------------------------------------------- ' VS 2003 code: ' ---------------------------------------------------------------------- . . . Dim myXslDoc As Xml.XmlDocument ' ---------------------------------------------------------------------- Public Sub mcSetParameters(ByVal srcFileName As String) ' ---------------------------------------------------------------------- Me.myXslDoc = New Xml.XmlDocument Me.myXslDoc.Load(srcFileName) End Sub ' ---------------------------------------------------------------------- Public Sub mcSetHtml() ' ---------------------------------------------------------------------- Dim oXPathNav As System.Xml.XPath.XPathNavigator = xmlDoc.DocumentElement.CreateNavigator() Dim sbContent As New System.Text.StringBuilder Dim swContent As New System.IO.StringWriter(sbContent) Dim args As New System.Xml.Xsl.XsltArgumentList args.AddParam("paramName1", "", paramVal1.ToString) args.AddParam("paramName2", "", paramVal2.ToString) Try ' Try to avoid "Invalid site" exception, by using XmlUrlResolver and Evidence. ' If the XSLT stylesheet . . . comes from a code base that you trust, Then use Me.GetType().Assembly.Evidence() Dim resolver As System.Xml.XmlUrlResolver = New System.Xml.XmlUrlResolver resolver.Credentials = System.Net.CredentialCache.DefaultCredentials Dim xslt As System.Xml.Xsl.XslTransform = New System.Xml.Xsl.XslTransform xslt.Load(Me.myXslDoc, resolver, Me.GetType().Assembly.Evidence()) xslt.Transform(oXPathNav, args, swContent, Nothing) Catch ex As Exception Debug.WriteLine("Exception: {0}", ex.ToString()) End Try DoSomething(sbContent.ToString()) End Sub ' ----------------------------------------------------------------------
in my old code, I have xmlDoc and xslDoc, so the compiled code that I have is (not yet verified):
'---------------------------------------------- --- ---------------------
"Trial code VS 2008:
'---------------------------------------------- --- ---------------------
Dim sbContent As System.Text.StringBuilder = New System.Text.StringBuilder() Dim swContent As System.IO.StringWriter = New System.IO.StringWriter(sbContent) Dim contentWriter As System.Xml.XmlWriter = System.Xml.XmlWriter.Create(swContent) Dim args As New System.Xml.Xsl.XsltArgumentList() args.AddParam("paramName1", "", paramVal1.ToString) args.AddParam("paramName2", "", paramVal2.ToString) Try Dim resolver As New System.Xml.XmlUrlResolver resolver.Credentials = System.Net.CredentialCache.DefaultCredentials Dim evidence As System.Security.Policy.Evidence = Me.GetType().Assembly.Evidence Dim secureResolver As New System.Xml.XmlSecureResolver(resolver, evidence) Dim settings As New System.Xml.Xsl.XsltSettings(False, True) Dim xslt As New System.Xml.Xsl.XslCompiledTransform() xslt.Load(Me.myXslDoc, settings, secureResolver) xslt.Transform(xmlDoc, args, contentWriter) Catch ex As Exception Debug.WriteLine("Exception: {0}", ex.ToString()) End Try DoSomething(sbContent.ToString())