But I wanted to run this as a seperate step from a batch file so that I can create my .html files on disk but maintain their content using XML.
Here's how I've done it:
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Xml.Xsl; using System.IO; namespace Tool.XMLToHTML { class Program { /// <summary> /// "Help\Help3\_HelpSource\gravity.xslt" "Help\Help3\_HelpSource" /// </summary> /// <param name="args"></param> static void Main(string[] args) { try { Console.WriteLine("\n"); Console.WriteLine("\tTransform xslt + xml to html."); Console.WriteLine("\n"); if (args.Length != 2) throw new ArgumentException("2 args required, .xslt file and the .xml file or directory"); if (!args[0].ToString().Contains(".xslt")) throw new ArgumentException(".xslt file expected as first arg"); string xmlSourceLocation = Path.GetDirectoryName(args[1] + Path.DirectorySeparatorChar); if (!args[1].ToString().Contains(".xml")) { if (!Directory.Exists(Path.GetDirectoryName(args[1] + Path.DirectorySeparatorChar))) throw new ArgumentException(string.Format("Directory {0} does not exist.", Path.GetDirectoryName(args[1]+Path.DirectorySeparatorChar))); else if(Directory.GetFiles(args[1], "*.xml").Length ==0) throw new ArgumentException(string.Format("Directory {0} does not contain .xml files.", args[1])); } Console.WriteLine("\n"); Console.WriteLine("\tTakes the fullpath to the .xslt"); Console.WriteLine("\tand the full path to the .xml or the directory containing the .xml."); Console.WriteLine("\tTransforms to .html files, in an output directory below the xml source location 'htmlOutput' i.e. {0}", Path.Combine(Path.GetDirectoryName(args[1]), "htmlOutput")); Console.WriteLine("\n"); // Load the style sheet. XslCompiledTransform xslt = new XslCompiledTransform(); xslt.Load(args[0]); string rootPath = Path.GetDirectoryName(args[1] + Path.DirectorySeparatorChar); string htmlOutputPath = Path.Combine(rootPath, "htmlOutput"); Directory.CreateDirectory(htmlOutputPath); if (Directory.Exists(xmlSourceLocation)) { string[] fileNames = Directory.GetFiles(xmlSourceLocation, "*.xml"); foreach (string xmlFileName in fileNames) xslt.Transform(xmlFileName, Path.Combine(htmlOutputPath, Path.GetFileNameWithoutExtension(xmlFileName) + ".html")); } else//single file xslt.Transform(args[1], Path.Combine(htmlOutputPath, Path.GetFileNameWithoutExtension(args[1]) + ".html")); Console.WriteLine("\tSuccess. HTML output can be found at {0}\n", htmlOutputPath); } catch (Exception e) { Console.WriteLine("\n"); Console.WriteLine("\tFailure. Transform to HMTL failed."); Console.WriteLine("\t" + e.Message); Console.WriteLine("\n"); } } } }
1 comment:
I like to make friends with you,haha.
----------------------------------------------------------------------------------------------------------------------------------------
Rc Helicopter|Mini Rc Helicopter|Rc Helicopters
Post a Comment