Advertisement
Guest User

Untitled

a guest
Mar 29th, 2017
62
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.01 KB | None | 0 0
  1. using System;
  2. using System.IO;
  3. using System.Xml;
  4. using System.Xml.Xsl;
  5.  
  6. namespace XSLTEvaluator
  7. {
  8. public class MainClass
  9. {
  10. public static void Main(string[] Args)
  11. {
  12. var transform = new XslCompiledTransform();
  13.  
  14. using (var xsl_stream = new FileStream(Args[0], FileMode.Open))
  15. {
  16. var xsl_reader = XmlReader.Create(xsl_stream);
  17. Console.WriteLine("Loading XSL file: " + Args[0]);
  18.  
  19. // We need to patch up xdTextBox elements into actual HTML text entries
  20. var xsl_document = new XmlDocument();
  21. xsl_document.Load(xsl_reader);
  22.  
  23. // We modify this list later, so we can't rely on the enumerator in the loop
  24. var spans = xsl_document.GetElementsByTagName("span");
  25. var possible_textboxes = new XmlNode[spans.Count];
  26. for (var i = 0; i < spans.Count; i++)
  27. {
  28. possible_textboxes[i] = (XmlNode)spans[i];
  29. }
  30.  
  31. foreach (var possible_textbox in possible_textboxes)
  32. {
  33. var class_attr = possible_textbox.Attributes.GetNamedItem("class");
  34. if (class_attr != null && class_attr.Value == "xdTextBox")
  35. {
  36. Console.WriteLine("... Preparing to replace <span ... class=\"xdTexBox\" ...> with <input>");
  37.  
  38. var new_textbox = xsl_document.CreateElement("input");
  39.  
  40. var new_attributes = new XmlAttribute[possible_textbox.Attributes.Count];
  41. possible_textbox.Attributes.CopyTo(new_attributes, 0);
  42. foreach (var new_attribute in new_attributes)
  43. {
  44. new_textbox.Attributes.Append(new_attribute);
  45. }
  46.  
  47. Console.WriteLine("... Copied " + new_attributes.Length + " attributes");
  48.  
  49. var new_textbox_type_attr = xsl_document.CreateAttribute("type");
  50. new_textbox_type_attr.Value = "input";
  51. new_textbox.Attributes.Append(new_textbox_type_attr);
  52. new_textbox.InnerXml = possible_textbox.InnerXml;
  53.  
  54. Console.WriteLine("... Performing replacement");
  55. possible_textbox.ParentNode.InsertAfter(new_textbox, possible_textbox);
  56. possible_textbox.ParentNode.RemoveChild(possible_textbox);
  57. }
  58. }
  59.  
  60. transform.Load(xsl_document);
  61. }
  62.  
  63. using (var xml_stream = new FileStream(Args[1], FileMode.Open))
  64. {
  65. Console.WriteLine("Loading XML template: " + Args[1]);
  66. var xml_reader = XmlReader.Create(xml_stream);
  67.  
  68. Console.WriteLine("Generating out.html");
  69. var xml_writer = XmlWriter.Create("out.html");
  70. transform.Transform(xml_reader, xml_writer);
  71. }
  72. }
  73. }
  74. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement