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

C# 如何在C中应用XSLT样式表#,c#,xml,xslt,C#,Xml,Xslt,我想使用C对XML文档应用XSLT样式表,并将输出写入文件。我在这里找到了一个可能的答案: 从文章中: XPathDocument myXPathDoc = new XPathDocument(myXmlFile) ; XslTransform myXslTrans = new XslTransform() ; myXslTrans.Load(myStyleSheet); XmlTextWriter myWriter = new XmlTextWriter("result.html",null)

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

我在这里找到了一个可能的答案:

从文章中:

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
已经过时了:使用
xslcomiledtransform

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

下面是一个关于如何在MSDN上的C#中进行XSL转换的教程:

下面是如何编写文件:

作为旁注:如果您也想进行验证,这里有另一个教程(针对DTD、XDR和XSD(=模式)):


我添加此代码只是为了提供更多信息。

基于Daren的出色回答,请注意,使用适当的:

(很抱歉将此冒充为答案,但注释中的
代码块
支持相当有限。)

在VB.NET中,您甚至不需要变量:

With New XslCompiledTransform()
    .Load("stylesheet.xsl")
    .Transform("source.xml", "result.html")
End With
这可能对你有帮助

公共静态字符串转换文档(字符串文档、字符串样式表路径)
{
Func GetXmlDocument=(xmlContent)=>
{
XmlDocument XmlDocument=新的XmlDocument();
LoadXml(xmlContent);
归还文件;
};
尝试
{
var document=GetXmlDocument(doc);
var style=GetXmlDocument(File.ReadAllText(stylesheetPath));
System.Xml.Xsl.xslcomiledtransform transform=new System.Xml.Xsl.xslcomiledtransform();
transform.Load(style);//编译的样式表
System.IO.StringWriter writer=新的System.IO.StringWriter();
XmlReader xmlReadB=新的XmlTextReader(新的StringReader(document.DocumentElement.OuterXml));
transform.transform(xmlReadB,null,writer);
返回writer.ToString();
}
捕获(例外情况除外)
{
掷骰子;
}
}   

事实上,我认为这是一个很好的问题,您提供了一个很好的答案。提名重新开放。我发现Xslt令人困惑,所以这对我很有帮助,因为我把你的一些答案作为我链接到的类,我想把它作为一个注释放在这里。希望它能为人们简化一些事情:我更喜欢这个解决方案,而不是重载版本,因为您可以设置和使用DTD、模式等。我需要在VB.NET(这是我的“offspec”语言,我更喜欢C#)中实现这一点,您的回答导致了我的解决方案。谢谢这是一个链接唯一的答案。请包括链接页面的相关部分。
With New XslCompiledTransform()
    .Load("stylesheet.xsl")
    .Transform("source.xml", "result.html")
End With