Como aplicar uma folha de Estilos XSLT em C#
Pergunta
Eu quero aplicar uma Folha de estilo XSLT para um Documento XML usando C# e escrever a saída para um Arquivo.
Solução
Eu encontrei uma possível resposta 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 fiel compilador diz, XslTransform
é obsoleto:Utilização XslCompiledTransform
em 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);
Outras dicas
Com base no Daren excelente resposta, observe que este código pode ser reduzida significativamente com o uso adequado XslCompiledTransform.Transformação de sobrecarga:
var myXslTrans = new XslCompiledTransform();
myXslTrans.Load("stylesheet.xsl");
myXslTrans.Transform("source.xml", "result.html");
(Desculpe para colocar isso como uma resposta, mas a code block
suporte de comentários é bastante limitado.)
No VB.NET, você não precisa mesmo 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 de XSL em C# no MSDN:
http://support.microsoft.com/kb/307322/en-us/
e aqui como gravar arquivos:
http://support.microsoft.com/kb/816149/en-us
como uma nota lateral:se você deseja fazer a validação demais, aqui está um outro tutorial (para a DTD, XDR, e XSD (=Schema)):
http://support.microsoft.com/kb/307379/en-us/
eu adicionei este apenas para fornecer mais algumas informações.