Perform an XSL Transformation using XML and XSL content and with some XSLT arguments
using System; using System.IO; using System.Text; using System.Xml; using System.Xml.XPath; using System.Xml.Xsl; namespace SharePointOfView.Utilities { /// <summary> /// SharePointOfView XSLT Utility class /// </summary> public static class XSLT { /// <summary> /// Perform an XSL Transformation using XML and XSL content /// </summary> /// <param name="xmlContent">XML source</param> /// <param name="xsltContent">XSL source</param> /// <returns>HTML</returns> public static string XSLTransform(string xmlContent, string xsltContent) { return XSLTransform(xmlContent, xsltContent, null); } /// <summary> /// Perform an XSL Transformation using XML and XSL content and with some XSLT arguments /// </summary> /// <param name="xmlContent">XML source</param> /// <param name="xsltContent">XSL source</param> /// <param name="xsltArgs">XSLT argument list</param> /// <returns>HTML</returns> public static string XSLTransform(string xmlContent, string xsltContent, XsltArgumentList xsltArgs) { string s; try { // Initialize a memorystring for output MemoryStream mem = new MemoryStream(); // Initialize a StreamReader using the MemoryStream StreamReader sr = new StreamReader(mem, UTF8Encoding.UTF8); // Initialize an XSLTransform object XslTransform xTrans = new XslTransform(); // Load XML Content XmlTextReader xmlReader = new XmlTextReader(xmlContent, XmlNodeType.Document, null); XPathDocument xmlDoc = new XPathDocument(xmlReader); // Load XSL Content XmlTextReader xslReader = new XmlTextReader(xsltContent, XmlNodeType.Document, null); XPathDocument xslDoc = new XPathDocument(xslReader); // Load XSL into transform xTrans.Load(xslDoc.CreateNavigator()); // Perform transformation xTrans.Transform(xmlDoc.CreateNavigator(), xsltArgs, mem); // Copy stream to string mem.Position = 0; s = sr.ReadToEnd(); sr.Close(); mem.Close(); } catch (Exception ex) { s = ex.Message; } return s; } } }