Cómo aplicar una hoja de estilo XSLT en C #

Quiero aplicar una hoja de estilo XSLT a un documento XML usando C # y escribir el resultado en un archivo.

Encontré una posible respuesta aquí: http://web.archive.org/web/20130329123237/http://www.csharpfriends.com/Articles/getArticle.aspx?articleID=63

Del artículo:

XPathDocument myXPathDoc = new XPathDocument(myXmlFile) ; XslTransform myXslTrans = new XslTransform() ; myXslTrans.Load(myStyleSheet); XmlTextWriter myWriter = new XmlTextWriter("result.html",null) ; myXslTrans.Transform(myXPathDoc,null,myWriter) ; 

Editar:

Pero mi fiel comstackdor dice que XslTransform está obsoleto: use XslCompiledTransform en XslCompiledTransform lugar:

 XPathDocument myXPathDoc = new XPathDocument(myXmlFile) ; XslCompiledTransform myXslTrans = new XslCompiledTransform(); myXslTrans.Load(myStyleSheet); XmlTextWriter myWriter = new XmlTextWriter("result.html",null); myXslTrans.Transform(myXPathDoc,null,myWriter); 

En función de la excelente respuesta de Daren, tenga en cuenta que este código se puede acortar de manera significativa utilizando la sobrecarga XslCompiledTransform.Transform adecuada:

 var myXslTrans = new XslCompiledTransform(); myXslTrans.Load("stylesheet.xsl"); myXslTrans.Transform("source.xml", "result.html"); 

(Perdón por plantear esto como una respuesta, pero el soporte del code block en los comentarios es bastante limitado.)

En VB.NET, ni siquiera necesita una variable:

 With New XslCompiledTransform() .Load("stylesheet.xsl") .Transform("source.xml", "result.html") End With 

Aquí hay un tutorial sobre cómo hacer Transformaciones XSL en C # en MSDN:

http://support.microsoft.com/kb/307322/en-us/

y aquí cómo escribir archivos:

http://support.microsoft.com/kb/816149/en-us

solo como una nota al margen: si quiere hacer la validación también, aquí hay otro tutorial (para DTD, XDR y XSD (= Esquema)):

http://support.microsoft.com/kb/307379/en-us/

Agregué esto solo para proporcionar más información.