Tôi muốn áp dụng Biểu định kiểu XSLT cho Tài liệu XML bằng C# và ghi đầu ra vào Tệp.Cách áp dụng Biểu định kiểu XSLT trong C#
Trả lời
Tôi tìm thấy một câu trả lời có thể ở đây: http://web.archive.org/web/20130329123237/http://www.csharpfriends.com/Articles/getArticle.aspx?articleID=63
Từ bài viết:
XPathDocument myXPathDoc = new XPathDocument(myXmlFile) ;
XslTransform myXslTrans = new XslTransform() ;
myXslTrans.Load(myStyleSheet);
XmlTextWriter myWriter = new XmlTextWriter("result.html",null) ;
myXslTrans.Transform(myXPathDoc,null,myWriter) ;
Edit:
Nhưng biên dịch đáng tin cậy của tôi nói, XslTransform
là lỗi thời: Sử dụng XslCompiledTransform
thay vì:
XPathDocument myXPathDoc = new XPathDocument(myXmlFile) ;
XslCompiledTransform myXslTrans = new XslCompiledTransform();
myXslTrans.Load(myStyleSheet);
XmlTextWriter myWriter = new XmlTextWriter("result.html",null);
myXslTrans.Transform(myXPathDoc,null,myWriter);
Vì tôi đã lấy một số câu trả lời của bạn để làm cho lớp mà tôi đang liên kết đến, nghĩ rằng tôi đã đặt nó như một bình luận ở đây Hy vọng rằng nó đơn giản hóa mọi thứ cho mọi người: http://dftr.ca/?p=318 – DFTR
Tôi thích giải pháp này thay vì phiên bản quá tải vì bạn có thể đặt [XmlReaderSettings] (http://msdn.microsoft.com/ en-us/library/system.xml.xmlreadersettings% 28v = vs.110% 29.aspx) và [XmlWriterSettings] (http://msdn.microsoft.com/en-us/library/system.xml.xmlwritersettings%28v = vs.110% 29.aspx) sử dụng DTD, Schemas, vv –
Tôi cần làm điều này trong VB.NET (ngôn ngữ "offspec" của tôi, tôi thích C#), và câu trả lời của bạn dẫn đến giải pháp của tôi. Cảm ơn – Eon
Đây là một hướng dẫn về làm thế nào để làm biến đổi XSL trong C# trên MSDN:
http://support.microsoft.com/kb/307322/en-us/
và ở đây làm thế nào để viết các tập tin:
http://support.microsoft.com/kb/816149/en-us
cũng giống như một mặt lưu ý: nếu bạn cũng muốn xác thực ở đây là một hướng dẫn khác (cho DTD, XDR và XSD (= Schema)):
http://support.microsoft.com/kb/307379/en-us/
tôi đã thêm điều này chỉ để cung cấp thêm một số thông tin.
Đây là câu trả lời chỉ dành cho liên kết. Vui lòng bao gồm các phần liên quan của các trang được liên kết. –
Dựa trên câu trả lời tuyệt vời Daren của, lưu ý rằng mã này có thể được rút ngắn đáng kể bằng cách sử dụng thích hợp XslCompiledTransform.Transform overload:
var myXslTrans = new XslCompiledTransform();
myXslTrans.Load("stylesheet.xsl");
myXslTrans.Transform("source.xml", "result.html");
(Xin lỗi vì tạo dáng này như là một câu trả lời, nhưng sự hỗ trợ code block
trong ý kiến là khá hạn chế .)
Trong VB.NET, bạn thậm chí không cần một biến:
With New XslCompiledTransform()
.Load("stylesheet.xsl")
.Transform("source.xml", "result.html")
End With
Thực ra, tôi nghĩ đây là một câu hỏi hay và bạn đã cung cấp một câu trả lời hay. Đề cử cho mở lại. –
Tôi thấy Xslt khó hiểu, do đó, điều này đã giúp tôi https://github.com/beto-rodriguez/SuperXml –