transformar - Cómo aplicar una hoja de estilo XSLT en C#
xslt demo (3)
Quiero aplicar una hoja de estilo XSLT a un documento XML usando C # y escribir el resultado en un archivo.
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.
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
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 compilador 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);