2008-08-29 14 views
159

Quiero aplicar una hoja de estilo XSLT a un documento XML usando C# y escribir la salida en un archivo.Cómo aplicar una hoja de estilo XSLT en C#

+10

En realidad, creo que esta es una gran pregunta, y usted proporcionó una buena respuesta. Nominando para reabrir –

+0

Encontré Xslt confuso, así que esto me ayudó https://github.com/beto-rodriguez/SuperXml –

Respuesta

154

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

Desde el 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 compilador de confianza dice, XslTransform es obsoleta: Uso 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); 
+0

Desde que tomé algunas de sus respuestas para hacer la clase a la que me estoy vinculando, pensé que lo pondría como una comentar aquí. Esperemos que simplifique las cosas para las personas: http://dftr.ca/?p=318 – DFTR

+0

Prefiero esta solución en lugar de la versión sobrecargada porque puede establecer [XmlReaderSettings] (http://msdn.microsoft.com/ es-us/library/system.xml.xmlreadersettings% 28v = vs.110% 29.aspx) y [XmlWriterSettings] (http://msdn.microsoft.com/en-us/library/system.xml.xmlwritersettings%28v = vs.110% 29.aspx) usando DTD, Schemas, etc. –

+2

Necesito hacer esto en VB.NET (que es mi lenguaje "offspec", prefiero C#), y su respuesta me llevó a mi solución. Gracias – Eon

13

Aquí es 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

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

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

He añadido esto solo para proporcionar más información.

+4

Esta es una respuesta de solo enlace. Por favor incluya las partes relevantes de las páginas enlazadas. –

116

Sobre la base de una excelente respuesta de Daren, tenga en cuenta que este código se puede acortar significativamente mediante el uso de la adecuada XslCompiledTransform.Transform overload:

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

(Lo siento por hacerse pasar esto como una respuesta, pero el apoyo code block de comentarios es bastante limitado .)

En VB.NET, usted ni siquiera necesita una variable:

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