/// <summary> /// Transform xml to html by xsl /// </summary> /// <param name="xml"></param> /// <param name="xslType"></param> /// <returns></returns> private string TransformXmlToHtml(string xml, XslType xslType) { var xmlSr = new StringReader(xml); var myXPathDoc = new XPathDocument(xmlSr); var myXslTrans = new XslCompiledTransform(); var type = GetType(); var fileName = GetXslFileName(xslType); var xslStream = type.GetTypeInfo().Assembly.GetManifestResourceStream(fileName); if (xslStream == null) { throw new Exception(string.Format("Resource:{0} is null", fileName)); } var xslSr = new StreamReader(xslStream); var xslXr = XmlReader.Create(xslSr); myXslTrans.Load(xslXr); var htmlBuilder = new StringBuilder(); var htmlSw = new StringWriter(htmlBuilder); myXslTrans.Transform(myXPathDoc, null, htmlSw); htmlBuilder.Replace("<?xml version=\"1.0\" encoding=\"utf-16\"?>", ""); xslStream.Dispose(); return(htmlBuilder.ToString()); }
/// <summary> /// GetResource's string by XslType enum /// </summary> /// <param name="xslType"></param> /// <returns></returns> private string GetXslFileName(XslType xslType) { switch (xslType) { case XslType.Type: return("Best.XmlDocumentCommentParser.DocumentationToJson.Type.xsl"); case XslType.Method: return("Best.XmlDocumentCommentParser.DocumentationToJson.Method.xsl"); default: throw new ArgumentOutOfRangeException("xslType"); } }