/// <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;
            }
		}