/// <summary> /// Конструктор, пишутся все необхордиммые заголовки для XSLT-Word-файла /// </summary> /// <param name="Head">Верхушка дерева</param> /// <param name="fileName">имя файла</param> /// <param name="XsdFileName">Имя XSD-файла</param> public WriteWordXml(Node Head, string fileName, string XsdFileName) { this.Head = Head; TextWriter file = new StreamWriter(fileName); tw = new XmlTextWriter(file); //tw.Formatting = Formatting.None; tw.WriteStartDocument(true); tw.WriteStartElement("xsl:stylesheet"); tw.WriteAttributeString("version","2.0"); tw.WriteAttributeString("xmlns:xsl","http://www.w3.org/1999/XSL/Transform"); tw.WriteStartElement("xsl:output"); tw.WriteAttributeString("method", "xml"); tw.WriteAttributeString("encoding", "utf-8"); tw.WriteEndElement(); tw.WriteStartElement("xsl:template"); tw.WriteAttributeString("match", "/"); tw.WriteStartElement("xsl:processing-instruction"); tw.WriteAttributeString("name", "mso-application"); tw.WriteStartElement("xsl:text"); tw.WriteString("progid=\"Word.Document\""); tw.WriteEndElement(); tw.WriteEndElement(); xsd = new XSD(XsdFileName); xsd.Load(); }
static int Main(string[] args) { Comp2 c = new Comp2(); c.DocumentType = DocumentType.Word; for (int i=0;i<args.Length;i++) { if (args[i].ToLower().Trim('/','-') == "?") { Console.WriteLine("//Правила аргументов командной строки такие...."); Console.WriteLine("// - WordXML имя_файла - имя входного WORD файла"); Console.WriteLine("// - ExcelXML имя_файла - имя входного Excel файла"); Console.WriteLine("// - readXSD имя_файла - имя входной схемы XSD"); Console.WriteLine("// - outXSL имя_файла - имя выходного XSLT файла"); Console.WriteLine("// - uri имя_URI - URI (тип документа)"); Console.WriteLine("// - ? - помощь"); return -1; } if (args[i].ToLower().Trim('/','-') == "wordxml" && i+1 < args.Length) { c.DocumentType = DocumentType.Word; c.inputXMLFile = args[i+1].Trim('\"','\'','`'); i++; continue; } if (args[i].ToLower().Trim('/', '-') == "excelxml" && i + 1 < args.Length) { c.DocumentType= DocumentType.Excel; c.inputXMLFile = args[i + 1].Trim('\"', '\'', '`'); i++; continue; } if (args[i].ToLower().Trim('/','-') == "readxsd" && i+1 < args.Length) { c.inputXSDFile = args[i+1].Trim('\"','\'','`'); i++; continue; } if (args[i].ToLower().Trim('/','-') == "outxsl" && i+1 < args.Length) { c.outXMLFile = args[i+1].Trim('\"','\'','`'); i++; continue; } if (args[i].ToLower().Trim('/','-') == "uri" && i+1 < args.Length) { c.URI = args[i+1].Trim('\"','\'','`'); i++; continue; } } /*string input = "apof1w1.xml"; string output = "out_word.xsl"; string URI = "APOF1"; string xsd = "apof1s.xsd";*/ if (c.DocumentType == DocumentType.Word) { ReadWordXml read = new ReadWordXml(c.inputXMLFile, c.URI); read.Read(); WriteWordXml write = new WriteWordXml(read.node, c.outXMLFile, c.inputXSDFile); write.Write(); return 0; } else { //Excel XSD xsd = null; try { xsd = new XSD(c.inputXSDFile); xsd.Load(); } catch (Exception ex) { Console.WriteLine("Ошибка парсинга xsd: " + ex); return 1; } ExcelReader reader = new ExcelReader(c.inputXMLFile); ExcelDocument st = reader.Process(); XmlNode node = st.GenerateXSLT(xsd); node.OwnerDocument.Save(c.outXMLFile); return 0; } }