Pergunta

Eu quero aplicar uma Folha de estilo XSLT para um Documento XML usando C# e escrever a saída para um Arquivo.

Foi útil?

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.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top