如何在C#中应用XSLT样式表

我想使用C#将XSLT样式表应用于XML文档,并将输出写入文件。

我在这里找到了一个可能的答案: http : //web.archive.org/web/20130329123237/http : //www.csharpfriends.com/Articles/getArticle.aspx?articleID=63

从文章:

XPathDocument myXPathDoc = new XPathDocument(myXmlFile) ; XslTransform myXslTrans = new XslTransform() ; myXslTrans.Load(myStyleSheet); XmlTextWriter myWriter = new XmlTextWriter("result.html",null) ; myXslTrans.Transform(myXPathDoc,null,myWriter) ; 

编辑:

但我的可靠编译器说, XslTransform已经过时了:改用XslCompiledTransform

 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的出色答案,请注意,通过使用适当的XslCompiledTransform.Transform重载,可以显着缩短此代码:

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

(对不起,这是一个答案,但code block在评论中的支持是相当有限的。)

在VB.NET中,你甚至不需要一个变量:

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

以下是关于如何在MSDN中使用C#进行XSL转换的教程:

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

在这里如何写文件:

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

只是作为一个方面说明:如果你想要做验证这里是另一个教程(对于DTD,XDR和XSD(=架构)):

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

我添加这只是为了提供更多的信息。