Como aplicar uma folha de estilo XSLT em c #

Eu quero aplicar uma folha de estilo XSLT a um documento XML usando C # e gravar a saída em um arquivo.

Eu encontrei uma resposta possível aqui: http://web.archive.org/web/20130329123237/http://www.csharpfriends.com/Articles/getArticle.aspx?articleID=63

Do artigo:

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:

Mas meu compilador confiável diz, XslTransform é obsoleto: use XslCompiledTransform vez disso:

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

Com base na excelente resposta de Daren, observe que esse código pode ser reduzido significativamente usando a sobrecarga de XslCompiledTransform.Transform apropriada:

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

(Desculpe por colocar isso como uma resposta, mas o suporte ao code block nos comentários é bastante limitado).

No VB.NET, você nem precisa de uma variável:

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

Aqui está um tutorial sobre como fazer Transformações XSL em C # no MSDN:

http://support.microsoft.com/kb/307322/pt-BR/

e aqui como escrever arquivos:

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

apenas como uma nota lateral: se você quer fazer validação também aqui está outro tutorial (para DTD, XDR e XSD (= Schema)):

http://support.microsoft.com/kb/307379/pt-BR/

Eu adicionei isso apenas para fornecer mais algumas informações.