সি # তে কীভাবে এক্সএসএলটি স্টাইলশিট প্রয়োগ করবেন


190

আমি সি # ব্যবহার করে একটি এক্সএমএল ডকুমেন্টে একটি এক্সএসএলটি স্টাইলশিট প্রয়োগ করতে এবং একটি ফাইলে আউটপুট লিখতে চাই।


11
আসলে, আমি মনে করি এটি একটি দুর্দান্ত প্রশ্ন এবং আপনি একটি ভাল উত্তর সরবরাহ করেছেন। পুনরায় খোলার জন্য মনোনীত করা হচ্ছে।
ডমিনিক রজার

আমি এক্সস্লটকে বিভ্রান্তিকর অবস্থায় পেয়েছি, সুতরাং এটি আমাকে github.com/beto-rodriguez/SererXml
bto.rdz

উত্তর:


177

আমি এখানে একটি সম্ভাব্য উত্তর খুঁজে পেয়েছি: 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);

যে ক্লাসের সাথে আমি লিঙ্ক দিচ্ছি তৈরি করতে আমি আপনার কিছু উত্তর নিয়েছি, ভেবেছি এটি এখানে একটি মন্তব্য হিসাবে রেখে দেব। আশা করি এটি মানুষের জন্য জিনিসগুলি সহজতর করে: dftr.ca/?p=318
DFTR

আমি ওভারলোডেড সংস্করণের পরিবর্তে এই সমাধানটি পছন্দ করি কারণ আপনি ডিটিডি, স্কিমাস ইত্যাদি ব্যবহার করে এক্সএমএলআরডিটারসেটিংস এবং এক্সএমএল রাইটারসেটিংস সেট করতে সক্ষম হচ্ছেন
অ্যালিনা বি

2
আমার এটি করা দরকার ভিবি.এনইটি (যা আমার "অফস্পেক" ভাষা, আমি সি # পছন্দ করি) এবং আপনার উত্তর আমার সমাধানের দিকে নিয়ে যায়। ধন্যবাদ
Eon

137

ডারেনের দুর্দান্ত উত্তরের উপর ভিত্তি করে, নোট করুন যে এই কোডটি যথাযথ XslCompiledTransfor.Transform ওভারলোড ব্যবহার করে উল্লেখযোগ্যভাবে ছোট করা যেতে পারে :

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

(এটিকে উত্তর হিসাবে প্রকাশ করার জন্য দুঃখিত, তবে code blockমন্তব্যে সমর্থন বরং সীমাবদ্ধ))

ভিবি.এনইটি-তে আপনার এমনকি ভেরিয়েবলের দরকার নেই:

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

16

এমএসডিএন-তে সি # তে কীভাবে এক্সএসএল ট্রান্সফর্মেশন করবেন সে সম্পর্কে একটি টিউটোরিয়াল এখানে রয়েছে:

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

এবং এখানে ফাইলগুলি কীভাবে লিখবেন:

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

পার্শ্ব নোট হিসাবে: আপনি যদি বৈধতা করতে চান তবে এখানে অন্য টিউটোরিয়াল রয়েছে (ডিটিডি, এক্সডিআর এবং এক্সএসডি (= স্কিমা) এর জন্য:

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

আমি এটি আরও কিছু তথ্য সরবরাহ করার জন্য যুক্ত করেছি।


6
এটি একটি লিঙ্ক-কেবল উত্তর। লিঙ্কযুক্ত পৃষ্ঠাগুলি সম্পর্কিত অংশ অন্তর্ভুক্ত করুন।
টমাস ওয়েলার 21

1

এটি আপনাকে সাহায্য করতে পারে

public static string TransformDocument(string doc, string stylesheetPath)
{
    Func<string,XmlDocument> GetXmlDocument = (xmlContent) =>
     {
         XmlDocument xmlDocument = new XmlDocument();
         xmlDocument.LoadXml(xmlContent);
         return xmlDocument;
     };

    try
    {
        var document = GetXmlDocument(doc);
        var style = GetXmlDocument(File.ReadAllText(stylesheetPath));

        System.Xml.Xsl.XslCompiledTransform transform = new System.Xml.Xsl.XslCompiledTransform();
        transform.Load(style); // compiled stylesheet
        System.IO.StringWriter writer = new System.IO.StringWriter();
        XmlReader xmlReadB = new XmlTextReader(new StringReader(document.DocumentElement.OuterXml));
        transform.Transform(xmlReadB, null, writer);
        return writer.ToString();
    }
    catch (Exception ex)
    {
        throw ex;
    }

}   
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.