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

Resuelto Daren Thomas asked hace 16 años • 5 respuestas

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

Daren Thomas avatar Aug 29 '08 14:08 Daren Thomas
Aceptado

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 confiable compilador dice que XslTransformestá obsoleto: use XslCompiledTransformen su 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);
Daren Thomas avatar Aug 29 '2008 07:08 Daren Thomas

Según la excelente respuesta de Daren, tenga en cuenta que este código se puede acortar significativamente utilizando la sobrecarga XslCompiledTransform.Transform adecuada :

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

(Perdón por presentar esto como una respuesta, pero el code blockapoyo en los comentarios es bastante limitado).

En VB.NET, ni siquiera necesitas una variable:

With New XslCompiledTransform()
    .Load("stylesheet.xsl")
    .Transform("source.xml", "result.html")
End With
Heinzi avatar May 15 '2012 07:05 Heinzi