Example #1
0
        private string ZjistiGrantovouPodporu(string souborDocx)
        {
            string result = null;

            if (!File.Exists(souborDocx))
            {
                return(result);
            }
            string sTempXml = Path.GetTempFileName();

            //OOXML.Pomucky.Dokument.ExtrahovatDoSouboru(sSouborDocx, sTempXml, true);
            OOXML.Pomucky.Dokument.ExtrahovatDoSouboru(souborDocx, sTempXml, false);
            XmlReaderSettings xrs = new XmlReaderSettings();

            xrs.CloseInput       = true;
            xrs.ConformanceLevel = ConformanceLevel.Document;
            XmlReader xr = XmlReader.Create(sTempXml, xrs);

            XmlNamespaceManager namespaceManager = new XmlNamespaceManager(new NameTable());

            namespaceManager.AddNamespace("w", "http://schemas.openxmlformats.org/wordprocessingml/2006/main");
            try
            {
                while (xr.Read())
                {
                    if (xr.NodeType == XmlNodeType.Element)
                    {
                        switch (xr.Name)
                        {
                        case "w:p":
                            XmlDocument paragraph = Objekty.ReadNodeAsXmlDocument(xr);
                            XmlNode     node      = paragraph.SelectSingleNode("/w:p/w:pPr/w:pStyle", namespaceManager);
                            if (node != null && node.Attributes.Count > 0 &&
                                (node.Attributes["w:val"].Value == "Grantovapodpora" || node.Attributes["w:val"].Value == "Grantova_podpora"))
                            {
                                result = paragraph.InnerText;
                                xr.Close();
                                goto End;
                            }
                            break;
                        }
                    }
                }
            }
            catch (Exception e)
            {
                throw e;
            }
            finally
            {
                xr.Close();
                File.Delete(sTempXml);
            }
End:
            if (File.Exists(sTempXml))
            {
                File.Delete(sTempXml);
            }
            return(result);
        }
        override public void Vytvor()
        {
            Console.WriteLine("Zadej jméno hrdiny: ");
            string jmeno = Console.ReadLine();

            Console.WriteLine("Zadej maximální sílu hrdiny: ");
            int maxSila;

            while (!int.TryParse(Console.ReadLine(), out maxSila))
            {
                Console.WriteLine("Neplatné zadání, zadej znovu: ");
            }
            Console.WriteLine("Zadej minimální sílu hrdiny: ");
            int minSila;

            while (!int.TryParse(Console.ReadLine(), out minSila))
            {
                Console.WriteLine("Neplatné zadání, zadej znovu: ");
            }
            Console.WriteLine("Zadej maximální intelekt hrdiny: ");
            int maxIntel;

            while (!int.TryParse(Console.ReadLine(), out maxIntel))
            {
                Console.WriteLine("Neplatné zadání, zadej znovu: ");
            }
            Console.WriteLine("Zadej minimální intelekt hrdiny: ");
            int minIntel;

            while (!int.TryParse(Console.ReadLine(), out minIntel))
            {
                Console.WriteLine("Neplatné zadání, zadej znavu: ");
            }
            Console.WriteLine("Zadej maximální obratnost hridny: ");
            int maxObratnost;

            while (!int.TryParse(Console.ReadLine(), out maxObratnost))
            {
                Console.WriteLine("Neplatné zadání, zadej znovu: ");
            }
            Console.WriteLine("Zadej minimální obratnost hrdiny: ");
            int minObratnost;

            while (!int.TryParse(Console.ReadLine(), out minObratnost))
            {
                Console.WriteLine("Neplatné zadání, zadej znovu: ");
            }
            Kostka sila       = new Kostka(minSila, maxSila);
            Kostka intelekt   = new Kostka(minIntel, maxIntel);
            Kostka obratnost  = new Kostka(minObratnost, maxObratnost);
            var    novyHrdina = new Hrdina(jmeno, sila, intelekt, obratnost);

            Objekty.Add(novyHrdina);
        }
Example #3
0
        public void VypisCharakteristiku()
        {
            if (base.VstupniSoubor == null || base.VystupniSoubor == null)
            {
                throw new ArgumentNullException("Nebyly zadány vhodné názvy vstupního nebo výstupního souboru.");
            }
            using (XmlReader r = Objekty.VytvorXmlReader(base.VstupniSoubor))
            {
                using (XmlWriter xw = Objekty.VytvorXmlWriter(base.VystupniSoubor))
                {
                    xw.WriteStartDocument(true);
                    xw.WriteStartElement("entries");
                    while (r.Read())
                    {
                        if (r.NodeType == XmlNodeType.Element)
                        {
                            switch (r.Name)
                            {
                            case "entryhead":
                                XmlDocument xd = new XmlDocument();
                                xd.LoadXml(r.ReadOuterXml());
                                if (xd.DocumentElement.InnerXml.Contains("<pos>"))
                                {
                                    xw.WriteStartElement("entryhead");
                                    foreach (XmlNode xn in xd.DocumentElement.ChildNodes)
                                    {
                                        if (xn.Name == "pos")
                                        {
                                            xn.WriteTo(xw);
                                            xw.WriteEndElement();
                                            break;
                                        }
                                        xn.WriteTo(xw);
                                    }
                                }
                                break;

                            default:
                                break;
                            }
                        }
                    }
                    xw.WriteEndElement();
                }
            }
        }
        override public void Vytvor()
        {
            Console.WriteLine("Zadej jméno nepřítele: ");
            string jmeno = Console.ReadLine();

            Console.WriteLine("Zadej zdraví nepřítele: ");
            int zdravi;

            while (!int.TryParse(Console.ReadLine(), out zdravi))
            {
                Console.WriteLine("Neplatné zadání, zadej znovu: ");
            }
            Console.WriteLine("Zadej minimální útok nepřítele: ");
            int minutok;

            while (!int.TryParse(Console.ReadLine(), out minutok))
            {
                Console.WriteLine("Neplatné zadání, zadej znovu: ");
            }
            Console.WriteLine("Zadej maximální útok nepřítele: ");
            int maxutok;

            while (!int.TryParse(Console.ReadLine(), out maxutok))
            {
                Console.WriteLine("Neplatné zadání, zadej znovu: ");
            }
            Console.WriteLine("Zadej minimální obranu nepřítele: ");
            int minobrana;

            while (!int.TryParse(Console.ReadLine(), out minobrana))
            {
                Console.WriteLine("Neplatné zadání, zadej znovu: ");
            }
            Console.WriteLine("Zadej maximální obranu nepřítele: ");
            int maxobrana;

            while (!int.TryParse(Console.ReadLine(), out maxobrana))
            {
                Console.WriteLine("Neplatné zadání, zadej znovu: ");
            }
            Kostka utok         = new Kostka(minutok, maxutok);
            Kostka obrana       = new Kostka(minobrana, maxobrana);
            var    novyNepritel = new Nepritel(jmeno, zdravi, utok, obrana);

            Objekty.Add(novyNepritel);
        }
Example #5
0
        public static void ExtrahovatSeznamXml(string strVstupniSoubor, string strVystupniSoubor, string strZdroj)
        {
            using (XmlReader r = Objekty.VytvorXmlReader(strVstupniSoubor)) {
                using (XmlWriter xw = Objekty.VytvorXmlWriter(strVystupniSoubor)) {
                    string sHeslo = null;
                    xw.WriteStartElement("xrefs");
                    xw.WriteAttributeString("source", strZdroj);
                    while (r.Read())
                    {
                        if (r.NodeType == XmlNodeType.Element)
                        {
                            switch (r.Name)
                            {
                            case "entry":
                                sHeslo = r.GetAttribute("defaulthw");
                                break;

                            case "xref":
                                XmlDocument xd = new XmlDocument();
                                XmlNode     xn = xd.ReadNode(r);
                                if (xn != null)
                                {
                                    xd.AppendChild(xn);
                                    XmlAttribute xa = xd.CreateAttribute("defaulthw");
                                    xa.Value = sHeslo;
                                    xd.DocumentElement.Attributes.Append(xa);
                                }

                                if (xd.DocumentElement != null)
                                {
                                    xd.WriteContentTo(xw);
                                }
                                break;

                            default:
                                break;
                            }
                        }
                    }
                    xw.WriteEndElement();                     //xrefs
                }
            }
        }
Example #6
0
        /// <summary>
        ///     Uloží termíny do samostatného souboru, odstraní prázdné xmlns, pouze s jedinečnými identifikátory
        /// </summary>
        public void TestExtrahujTerminy(string inputFile, string outputFile)
        {
            var xws = new XmlWriterSettings();
            var namespaceManager = new XmlNamespaceManager(new NameTable());

            namespaceManager.AddNamespace("", "http://vokabular.ujc.cas.cz/ns/anotace");

            xws.Indent = true;
            var           identifikatory = new Dictionary <string, string>(10000);
            List <string> heslaPaginy    = null;

            using (var xw = XmlWriter.Create(outputFile, xws))
            {
                xw.WriteStartDocument();
                xw.WriteStartElement("terms");

                using (var xr = XmlReader.Create(inputFile))
                {
                    xr.MoveToContent();
Dalsi:
                    while (xr.Read())
                    {
                        if (xr.NodeType == XmlNodeType.Element && xr.Name == "term")
                        {
                            var guid = xr.GetAttribute("id");
                            if (!identifikatory.ContainsKey(guid))
                            {
                                identifikatory.Add(guid, guid);
                                xr.MoveToElement();
                                var xd = Objekty.ReadNodeAsXmlDocument(xr);
                                xd.DocumentElement.RemoveAttribute("xmlns", "");
                                xw.WriteNode(xd.DocumentElement.CreateNavigator(), false);
                                goto Dalsi;
                                //xw.WriteNode(xr, false);
                            }
                        }
                    }
                }
                xw.WriteEndElement(); //terms
                xw.WriteEndDocument();
            }
        }
Example #7
0
        public override void Vytvor()
        {
            Console.WriteLine("Zadej název předmětu: ");
            string nazev = Console.ReadLine();

            Console.WriteLine("Zadej popis předmětu: ");
            string popis = Console.ReadLine();
            int    id    = 0;

            foreach (Predmet predmet in Objekty)
            {
                if (predmet.ID > id)
                {
                    id = predmet.ID;
                }
            }
            var novyPredmet = new Predmet(nazev, popis, id + 1);

            Objekty.Add(novyPredmet);
        }
Example #8
0
        public static void VytvoritSeznamText(string strVstupniSoubor, string strVystupniSoubor, bool blnSeradit, bool blnBezDuplicit)
        {
            List <OdkazInfo> glsOdkazy = new List <OdkazInfo>();

            using (XmlReader r = Objekty.VytvorXmlReader(strVstupniSoubor)) {
                string sZdroj = null;
                while (r.Read())
                {
                    if (r.NodeType == XmlNodeType.Element && r.Name == "xrefs")
                    {
                        sZdroj = r.GetAttribute("source");
                    }
                    if (r.NodeType == XmlNodeType.Element && r.Name == "xref")
                    {
                        OdkazInfo o = new OdkazInfo(r.GetAttribute("prefix"), r.GetAttribute("hw"), r.GetAttribute("hom"), sZdroj, r.GetAttribute("source"), r.GetAttribute("target"), r.GetAttribute("defaulthw"), r.ReadString().Trim());
                        glsOdkazy.Add(o);
                    }
                }
            }

            if (blnSeradit)
            {
                glsOdkazy.Sort();
            }

            using (StreamWriter sw = new StreamWriter(strVystupniSoubor, false, System.Text.Encoding.Unicode)) {
                foreach (OdkazInfo o in glsOdkazy)
                {
                    sw.WriteLine(o.Zaznam());
                }
            }


            if (blnBezDuplicit)
            {
                CteckaSouboru csb = new CteckaSouboru(strVystupniSoubor);
                csb.OdstranDuplicitniRadky(true);
                csb = null;
            }
        }
Example #9
0
        public void VypisHeslaTypeUse()
        {
            if (base.VstupniSoubor == null || base.VystupniSoubor == null)
            {
                throw new ArgumentNullException("Nebyly zadány vhodné názvy vstupního nebo výstupního souboru.");
            }
            using (XmlReader r = Objekty.VytvorXmlReader(base.VstupniSoubor))
            {
                using (XmlWriter xw = Objekty.VytvorXmlWriter(base.VystupniSoubor))
                {
                    xw.WriteStartDocument(true);
                    xw.WriteStartElement("entries");
                    while (r.Read())
                    {
                        if (r.NodeType == XmlNodeType.Element)
                        {
                            switch (r.Name)
                            {
                            case "entry":
                                string sUse  = r.GetAttribute("use");
                                string sType = r.GetAttribute("type");
                                if (sUse == "public" && sType == "excl")
                                {
                                    DPXT.SerializeNode(r, xw);
                                    xw.WriteEndElement();
                                }
                                break;

                            default:
                                break;
                            }
                        }
                    }
                    xw.WriteEndElement();
                }
            }
        }
Example #10
0
        public static void HeslarXml(string strVstupniSoubor, string strVystupniSoubor, Dictionary <string, ZpracovatTagProHeslarXml> gztTagyZpracovani)
        {
            char[] chIndexy     = schIndexy;
            char[] chSeparatory = schSeparatory;

            using (XmlReader r = Objekty.VytvorXmlReader(strVstupniSoubor)) {
                using (XmlWriter xwHeslar = Objekty.VytvorXmlWriter(strVystupniSoubor)) {
                    xwHeslar.WriteStartDocument(true);
                    xwHeslar.WriteStartElement("heslar");
                    string          strNazevTagu   = null;
                    HesloInfo       hiHeslo        = null;
                    PismenoInfo     piPismeno      = null;
                    HeslovaStatInfo hsiHeslovaStat = null;

                    #region WHILE
                    while (r.Read())
                    {
                        strNazevTagu = r.Name;
                        if (r.NodeType == XmlNodeType.Element)
                        {
                            if (gztTagyZpracovani != null && gztTagyZpracovani.ContainsKey(strNazevTagu))
                            {
                                gztTagyZpracovani[strNazevTagu](r, xwHeslar, piPismeno, hsiHeslovaStat, hiHeslo);
                            }
                            else
                            {
                                #region SWITCH
                                switch (r.Name)
                                {
                                case "dictionary":
                                    string sSource = r.GetAttribute("name");
                                    xwHeslar.WriteAttributeString("dictionary", sSource);
                                    break;

                                case "div1":
                                    piPismeno      = new PismenoInfo();
                                    piPismeno.Id   = r.GetAttribute("id");
                                    piPismeno.Text = r.GetAttribute("text");

                                    VypisZacatekPismene(xwHeslar, piPismeno);
                                    break;

                                /*
                                 * case "entryref":
                                 *       iHw = 0;
                                 *       xwHeslar.WriteStartElement("heslovaStat");
                                 *       sIdEntry = r.GetAttribute("id");
                                 *       xwHeslar.WriteAttributeString("id", sIdEntry);
                                 *       xwHeslar.WriteAttributeString("type", "ref");
                                 *       break;
                                 */
                                case "entry":
                                    //iHw = 0;
                                    hsiHeslovaStat     = new HeslovaStatInfo();
                                    hsiHeslovaStat.Id  = r.GetAttribute("id");
                                    hsiHeslovaStat.Typ = r.GetAttribute("type");
                                    xwHeslar.WriteStartElement("heslovaStat");
                                    Transformace.SerializeAttributes(r, xwHeslar, false);
                                    //sIdEntry = r.GetAttribute("id");
                                    //xwHeslar.WriteAttributeString("id", sIdEntry);
                                    //string sTypEntry = r.GetAttribute("type");
                                    //if (null != sTypEntry)
                                    //    xwHeslar.WriteAttributeString("type", sTypEntry);
                                    break;

                                case "hw":
                                    //zkontrolovat, jestli odstavec obsahuje "nenáležitá podoba" - a pak heslo vyřadit/označit jako interní
                                    //jenže akce následuje až za heslovým slovem
                                    string sForma = r.GetAttribute("form");
                                    Transformace.SerializeNode(r, xwHeslar);
                                    string strHeslo = r.ReadString();
                                    strHeslo = strHeslo.Trim();
                                    for (int i = 0; i < chIndexy.Length; i++)
                                    {
                                        if (strHeslo.Contains(chIndexy[i].ToString()))
                                        {
                                            strHeslo = strHeslo.Remove(strHeslo.IndexOf(chIndexy[i]), 1);
                                            //xwHeslar.WriteAttributeString("hom", chIndexy[i].ToString());
                                            break;
                                        }
                                    }
                                    if (strHeslo.IndexOf('-') == strHeslo.Length - 1 || strHeslo.IndexOf('-') == 0)
                                    {
                                        if (sForma == null)
                                        {
                                            xwHeslar.WriteAttributeString("form", "short");
                                        }
                                    }
                                    if (strHeslo.Contains("(?)"))
                                    {
                                        strHeslo = strHeslo.Replace("(?)", "");   //otazník v závorce za heslem
                                    }
                                    strHeslo = strHeslo.TrimEnd(chSeparatory);
                                    strHeslo = strHeslo.TrimEnd();
                                    //strHeslo = strHeslo.TrimEnd(chIndexy);
                                    if (strHeslo.Length > 0)
                                    {
                                        char chPismeno = strHeslo[0];
                                        if (chPismeno == '*' || chPismeno == '\u02E3')      //  || chPismeno == '\u02DF')  - zobrazovalo se špatně v IE
                                        //nemělo by se takové heslo upravit tak, že se odstraní první znak?
                                        {
                                            xwHeslar.WriteAttributeString("pref", strHeslo.Substring(0, 1));
                                        }

                                        xwHeslar.WriteString(strHeslo);
                                    }
                                    break;
                                }
                                #endregion
                            }
                        }
                        #region IF2
                        if (r.NodeType == XmlNodeType.EndElement)
                        {
                            if (gztTagyZpracovani != null && gztTagyZpracovani.ContainsKey(strNazevTagu))
                            {
                                gztTagyZpracovani[strNazevTagu](r, xwHeslar, piPismeno, hsiHeslovaStat, hiHeslo);
                            }
                            else
                            {
                                switch (r.Name)
                                {
                                case "div1":
                                    xwHeslar.WriteEndElement();
                                    break;

                                case "entry":
                                    xwHeslar.WriteEndElement();
                                    break;

                                case "hw":
                                    xwHeslar.WriteEndElement();
                                    break;
                                }
                            }
                        }
                        #endregion
                    }
                    #endregion
                }
            }
        }
Example #11
0
        public static void HeslarText(string strVstupniSoubor, string sVystupniSoubor)
        {
            string sSubVoce   = null;
            string sSubVoceId = null;
            //string sHeslo = null;
            //string sId = null;
            //string sType = null;
            string sHeslovaStatTyp = null;
            string sHeslovaStatID  = null;
            //string sHomonymum = null;
            //string sRetrograd = null;
            string sPismeno = null;
            string sZdroj   = null;
            string sPouziti = null;

            using (XmlReader r = Objekty.VytvorXmlReader(strVstupniSoubor)) {
                using (StreamWriter sw = new StreamWriter(sVystupniSoubor, false, System.Text.Encoding.Unicode)) {
                    while (r.Read())
                    {
                        if (r.NodeType == XmlNodeType.Element)
                        {
                            switch (r.Name)
                            {
                            case "hw":
                                string[]  asVlastnosti = new string[20];
                                HesloInfo hi           = new HesloInfo();

                                string sRef     = r.GetAttribute("ref");
                                string sZdrojHW = r.GetAttribute("source");
                                string sZdrojID = r.GetAttribute("target");
                                string sPrefix  = r.GetAttribute("pref");
                                //if(r.GetAttribute("id") == "en000040.hw3")
                                // sPrefix = r.GetAttribute("pref");
                                string strTyp = r.GetAttribute("type");

                                //asVlastnosti[0] = ""; //prefix
                                //asVlastnosti[1] = ""; //hesloveSlovo
                                //asVlastnosti[2] = ""; //postfix

                                /*
                                 * asVlastnosti[3] = r.GetAttribute("hom");
                                 * asVlastnosti[4] = ""; //slovní druh
                                 * asVlastnosti[5] = ""; //další informace
                                 * asVlastnosti[6] = ""; //varianta
                                 *
                                 * asVlastnosti[7] = r.GetAttribute("id");
                                 * asVlastnosti[8] = r.GetAttribute("form");
                                 * asVlastnosti[9] = strTyp; //substandard
                                 * asVlastnosti[10] = r.GetAttribute("xml:lang");
                                 * asVlastnosti[11] = sHeslovaStatID;
                                 * asVlastnosti[12] = ""; //heslová stať
                                 * asVlastnosti[13] = sHeslovaStatTyp;
                                 * asVlastnosti[14] = sPismeno;
                                 * asVlastnosti[15] = sZdroj;
                                 */


                                hi.Homonymum         = r.GetAttribute("hom");
                                hi.SlovniDruh        = "";
                                hi.DalsiInformace    = "";
                                hi.Varianta          = "";
                                hi.Id                = r.GetAttribute("id");
                                hi.Forma             = r.GetAttribute("form");
                                hi.TypHeslovehoSlova = strTyp;   //substandard
                                hi.Lang              = r.GetAttribute("xml:lang");
                                hi.HeslovaStatId     = sHeslovaStatID;
                                hi.HeslovaStat       = ""; //heslová stať
                                hi.HeslovaStatTyp    = sHeslovaStatTyp;
                                hi.Pismeno           = sPismeno;
                                hi.ZkratkaZdroje     = sZdroj;
                                hi.JeRef             = sRef;


                                if (strTyp == "substandard" && sZdroj == "ESSC")   // hi.TypHeslovehoSlova == "1"
                                {
                                    break;
                                }

                                /*
                                 * if (asVlastnosti[9] == "substandard" && sZdroj == "ESSC") {
                                 *      break;
                                 * }
                                 */


                                if (sZdrojHW == "HesStcS")
                                {
                                    hi.HesStcSIdRef = sZdrojID;
                                }

                                /*
                                 * if (sZdrojHW == "HesStcS") {
                                 *      asVlastnosti[19] = sZdrojID;
                                 * }
                                 */

                                //if (asVlastnosti[3] == null)
                                //   asVlastnosti[3] = "";

                                hi.ZpusobVyuziti = sPouziti;

                                //if (sPouziti == "internal")
                                // hi.FormId = 1;

                                /*
                                 * if (sPouziti == "internal")
                                 *      asVlastnosti[18] = "1";
                                 */


                                //logika součást get

                                /*
                                 * switch (asVlastnosti[8]) {
                                 *      case "short":
                                 *              asVlastnosti[8] = "4";
                                 *              break;
                                 *      case "restored":
                                 *              asVlastnosti[8] = "2";
                                 *              break;
                                 *      default:
                                 *              asVlastnosti[8] = "1";
                                 *              break;
                                 * }
                                 *
                                 * if (asVlastnosti[9] == null)
                                 *      asVlastnosti[9] = "0";
                                 * else
                                 *      asVlastnosti[9] = "1";
                                 *
                                 * if (asVlastnosti[10] == null) {
                                 *      asVlastnosti[10] = "1";
                                 * }
                                 *
                                 * switch (sHeslovaStatTyp) {
                                 *      case "ref":
                                 *              asVlastnosti[13] = "4";
                                 *              break;
                                 *      case "full":
                                 *              asVlastnosti[13] = "2";
                                 *              break;
                                 *      case "excl": //v ESSČ
                                 *              asVlastnosti[13] = "8";
                                 *              break;
                                 *      default:
                                 *              asVlastnosti[13] = "1";
                                 *              break;
                                 * }
                                 * if (sRef == "true") {
                                 *      asVlastnosti[13] = "4";
                                 * }
                                 *
                                 *
                                 * switch (sZdroj) {
                                 *      case "MSS":
                                 *              asVlastnosti[15] = "2";
                                 *              break;
                                 *      case "ESSC":
                                 *              asVlastnosti[15] = "4";
                                 *              break;
                                 *      case "GbSlov":
                                 *              asVlastnosti[15] = "8";
                                 *              break;
                                 *      case "StcS":
                                 *      case "StcSSlov":
                                 *              asVlastnosti[15] = "16";
                                 *              break;
                                 *      case "SimekSlov":
                                 *              asVlastnosti[15] = "32";
                                 *              break;
                                 *      case "HesStcS":
                                 *      case "StcSMat":
                                 *              asVlastnosti[15] = "1";
                                 *              break;
                                 *      default:
                                 *              break;
                                 * }
                                 */

                                string sObsahElementu = r.ReadElementString();

                                if (!hi.ZpracujHesloveSlovo(sObsahElementu, sPrefix))
                                {
                                    break;
                                }

                                /*
                                 * if (hi.HesloveSlovo == "žižň")
                                 * {
                                 *      string d = hi.HesloveSlovo;
                                 * }
                                 */
                                /*
                                 * asVlastnosti[1] = sObsahElementu;
                                 * if (!String.IsNullOrEmpty(sPrefix)) {
                                 *      asVlastnosti[0] = sPrefix;
                                 *      asVlastnosti[1] = asVlastnosti[1].Substring(sPrefix.Length);
                                 * }
                                 *
                                 *
                                 * if (asVlastnosti[1].Contains("(?)")) {
                                 *      asVlastnosti[1] = asVlastnosti[1].Replace("(?)", "").TrimEnd();
                                 * }
                                 * int i = 0;
                                 * //while (!Char.IsLetter(asVlastnosti[1], i))
                                 * //{
                                 * //   asVlastnosti[0] += asVlastnosti[1][i].ToString();
                                 * //   asVlastnosti[1] = asVlastnosti[1].Substring(1);
                                 * //   //i++;
                                 * //}
                                 *
                                 * i = asVlastnosti[1].Length - 1;
                                 * if (i == -1) {
                                 *      break;
                                 * }
                                 * while (!Char.IsLetter(asVlastnosti[1], i)) {
                                 *      if (asVlastnosti[1][i] == ')' || asVlastnosti[1][i] == '-')
                                 *              break;
                                 *      asVlastnosti[2] += asVlastnosti[1][i].ToString();
                                 *      asVlastnosti[1] = asVlastnosti[1].Substring(0, i);
                                 *      i--;
                                 *      if (i == -1) {
                                 *              break;
                                 *      }
                                 * }
                                 * if (i == -1) {
                                 *      break;
                                 * }
                                 * sRetrograd = Text.Retrograd(asVlastnosti[1], true);
                                 *
                                 * if (sRetrograd.IndexOf(" ") > 0 && !(sRetrograd.Contains(" – ") || sRetrograd.Contains(" - "))) {
                                 *      asVlastnosti[16] = sRetrograd.Substring(sRetrograd.LastIndexOf(" ") + 1);
                                 *      asVlastnosti[17] = sRetrograd.Substring(0, sRetrograd.LastIndexOf(" "));
                                 * }
                                 * else
                                 *      asVlastnosti[16] = sRetrograd;
                                 */

                                if (sSubVoceId == null)
                                {
                                    //sSubVoce = sHeslo;
                                    sSubVoceId = hi.Id;
                                }

                                /*
                                 * if (sSubVoceId == null) {
                                 *      //sSubVoce = sHeslo;
                                 *      sSubVoceId = asVlastnosti[7];
                                 * }
                                 */

                                //if (sType == null)
                                //    sType = "";

                                //sw.WriteLine(String.Join("|", asVlastnosti));

                                /*
                                 * if (hi.HesloveSlovo == "Žižka") {
                                 *      string sT = hi.HesloveSlovo;
                                 *      bool b = hi.JeInterni;
                                 * }
                                 * */

                                sw.WriteLine(hi.Zaznam());


                                break;

                            case "heslovaStat":
                                sHeslovaStatTyp = r.GetAttribute("type");
                                sHeslovaStatID  = r.GetAttribute("id");
                                sSubVoce        = r.GetAttribute("defaulthw");
                                sPouziti        = r.GetAttribute("use"); //internal, public

                                sSubVoceId = null;
                                break;

                            case "pismeno":
                                sPismeno = r.GetAttribute("id");
                                break;

                            case "heslar":
                                sZdroj = r.GetAttribute("dictionary");
                                break;
                            }
                        }
                    }
                }
            }
        }
Example #12
0
        /// <summary>
        ///     Extrahuje hesla a podheslí z
        /// </summary>
        /// <param name="identifikatorDilu"></param>
        /// <param name="changeRuleSetFile"></param>
        public void TestExtrahujHesla(string inputFile, string outputFile, string identifikatorDilu, string changeRuleSetFile, bool generateHeader = true)
        {
            var assembly      = Assembly.GetExecutingAssembly();
            var changeRuleSet = ChangeRuleSet.Load(assembly.GetManifestResourceStream(changeRuleSetFile));

            var xws = new XmlWriterSettings();

            xws.Indent = true;
            var           identifikatory = new Dictionary <string, Guid>(10000);
            List <string> heslaPaginy    = null;

            //string sSoubor = @"D:\Slovniky\JgSlov\Data\JgSlov_Transkripce.xml";
            //Transformator trs = NactiNovaPravidla(sSoubor);

            using (var xw = XmlWriter.Create(outputFile, xws))
            {
                xw.WriteStartDocument();

                if (generateHeader)
                {
                    xw.WriteStartElement("TEI", "http://www.tei-c.org/ns/1.0");

                    //xw.WriteAttributeString("xmlns", "http://www.tei-c.org/ns/1.0");
                    var xd = new XmlDocument();
                    xd.LoadXml(DejHlavicku(identifikatorDilu));
                    xd.WriteContentTo(xw);
                }

                xw.WriteStartElement("facsimile", "http://www.tei-c.org/ns/1.0");
                xw.WriteAttributeString("n", identifikatorDilu);

                using (var xr = XmlReader.Create(inputFile))
                {
                    var pagina  = "0";
                    var pismeno = "M";

                    var divId    = "body";
                    var divLevel = 0;

                    string    lastEntryId = "";
                    XmlReader lastForm    = null;

                    var iHeslo        = 1;
                    var surfaceIsOpen = false;
                    var descIsOpen    = false;
                    xr.MoveToContent();

                    while (xr.Read())
                    {
                        var nodeName = xr.Name;
                        if (xr.NodeType == XmlNodeType.Element)
                        {
                            switch (nodeName)
                            {
                            case "div":
                                if (!xr.IsEmptyElement)
                                {
                                    divLevel++;
                                }
                                divId = xr.GetAttribute("xml:id");

                                break;

                            case "head":
                            case "Pismeno":
                                if (nodeName == "head" && divLevel != 2)
                                {
                                    break;
                                }

                                pismeno = Objekty.ReadCurrentNodeContentAsString(xr).ToUpper();
                                if (pismeno.IndexOf('(') > -1)
                                {
                                    pismeno = pismeno.Substring(0, pismeno.IndexOf('(') - 1).Trim();
                                }
                                if (pismeno.EndsWith("."))
                                {
                                    pismeno = pismeno.Substring(0, pismeno.Length - 1);
                                }

                                break;

                            case "pb":
                            case "Paginace":
                                heslaPaginy = new List <string>(120);
                                if (descIsOpen)
                                {
                                    xw.WriteEndElement();     //desc
                                    descIsOpen = false;
                                }
                                if (surfaceIsOpen)
                                {
                                    xw.WriteStartElement("graphic");

                                    if (identifikatorDilu != "DDBW")     //DDBW has not have graphic
                                    {
                                        xw.WriteAttributeString("url", DejNazevSouboru(pagina, identifikatorDilu));
                                    }

                                    xw.WriteEndElement();     //graphic

                                    xw.WriteEndElement();     //surface
                                    surfaceIsOpen = false;
                                }

                                pagina = nodeName == "pb"
                                        ? xr.GetAttribute("n")
                                        : Objekty.ReadCurrentNodeContentAsString(xr).Trim();
                                xw.WriteStartElement("surface");
                                surfaceIsOpen = true;
                                xw.WriteAttributeString("n", pagina);
                                xw.WriteStartElement("desc");
                                descIsOpen = true;

                                break;

                            case "entryFree":
                                lastEntryId = xr.GetAttribute("xml:id");

                                break;

                            case "form":
                                lastForm = xr.ReadSubtree();

                                break;

                            case "orth":
                            case "heslo":
                            case "podhesli":
                                var heslo = Objekty.ReadCurrentNodeContentAsString(xr).Trim();
                                heslo = UppercaseFirst(heslo);
                                var type = "main";

                                if (nodeName == "podhesli")
                                {
                                    type = "detail";
                                }

                                var pocatecniPismeno = RemoveNonLetters(heslo);

                                if (pocatecniPismeno.Length == 0)
                                {
                                    break;                                   //chyba - to by se nemělo stát; TODO
                                }
                                pocatecniPismeno = DejPocatecniPismeno(pocatecniPismeno, true);

                                // string identifikator = String.Format("{0}|{1}|{2}", heslo.ToLower(), type, pismeno);
                                var identifikator = string.Format("{0}|{1}|{2}", heslo.ToLower(), type, pocatecniPismeno);

                                if (!identifikatory.ContainsKey(identifikator))
                                {
                                    identifikatory.Add(identifikator, Guid.NewGuid());
                                }

                                //na stránce se v MDM nesmějí vyskytovat duplicitní heslo
                                //nebo to udělat tak, že (pod)heslo vždycky dostane jedinečné GUID
                                if (!heslaPaginy.Contains(identifikator))
                                {
                                    xw.WriteStartElement("term");
                                    xw.WriteAttributeString("id", identifikatory[identifikator].ToString("D"));
                                    xw.WriteAttributeString("type", type);

                                    //xw.WriteAttributeString("subtype", pismeno);
                                    xw.WriteAttributeString("subtype", pocatecniPismeno);

                                    string international = null;

                                    //international = trs.AplikujPravidla(heslo, "cze");

                                    if (nodeName == "orth")     //die if not exist parent <form> for <orth>
                                    {
                                        xw.WriteAttributeString("n", lastEntryId);

                                        while (lastForm.Read())
                                        {
                                            if (lastForm.NodeType == XmlNodeType.Element)
                                            {
                                                if (lastForm.Name == "reg")
                                                {
                                                    international = Objekty.ReadCurrentNodeContentAsString(lastForm).Trim();
                                                }
                                            }
                                        }
                                    }
                                    international = international ?? changeRuleSet.Apply(heslo);

                                    xw.WriteAttributeString("international", international);

                                    if (nodeName != "orth")
                                    {
                                        xw.WriteAttributeString("n", string.Format("{0:000000}", iHeslo++));
                                    }
                                    xw.WriteString(heslo);
                                    xw.WriteEndElement();     //term
                                    heslaPaginy.Add(identifikator);
                                }

                                break;

                            default:
                                break;
                            }
                        }
                        else if (xr.NodeType == XmlNodeType.EndElement)
                        {
                            switch (nodeName)
                            {
                            case "div":
                                divLevel--;

                                break;
                            }
                        }
                    }
                }
                xw.WriteEndElement(); //facsimile
                if (generateHeader)
                {
                    xw.WriteEndElement(); //TEI
                }
                xw.WriteEndDocument();
            }
        }
Example #13
0
        /// <summary>
        /// Upraví hranice heslové stati, seskupí všechny prvky heslové stati do elementu &lt;entry&gt;. Využívá při tom značku &lt;entryend&gt;
        /// </summary>
        /// <exception cref="ArgumentNullException">Vyvolá výjimku, pokud nejsou zadány vstupní nebo výstupní soubor.</exception>
        public override void UpravitHraniceHesloveStati(string inputFile, string outputFile)
        {
            //výchozí imnplementace se hodí pro ESSČ
            string sChyba = null;

            if (inputFile == null || outputFile == null)
            {
                throw new ArgumentNullException("Nebyly zadány vhodné názvy vstupního nebo výstupního souboru.");
            }
            using (XmlReader r = Objekty.VytvorXmlReader(inputFile))
            {
                using (XmlWriter xw = Objekty.VytvorXmlWriter(outputFile))
                {
                    /*
                     * string strTypSenseGrp = null;
                     * Stack<string> gstTypSenseGrp = new Stack<string>();
                     * int intPocetOtevrenychSenseGrp = 0;
                     * bool blnVyskytlySeVyznamy = false;
                     */
                    bool blnJeSenseGrp = false;
                    bool blnJeSense    = false;

                    xw.WriteStartDocument(true);
                    bool blnPrvniEntryhead = true;
                    try
                    {
                        while (r.Read())
                        {
                            if (r.NodeType == XmlNodeType.Element)
                            {
                                switch (r.Name)
                                {
                                case "entryhead":
                                    if (blnPrvniEntryhead)
                                    {
                                        xw.WriteStartElement("entry");
                                        xw.WriteWhitespace("\r\n");
                                        blnPrvniEntryhead = false;
                                    }
                                    DPXT.SerializeNode(r, xw);
                                    blnJeSenseGrp = blnJeSense = false;

                                    break;

                                case "entryend":
                                    xw.WriteEndElement();                                             //entry
                                    xw.WriteWhitespace("\r\n");
                                    blnPrvniEntryhead = true;

                                    break;

                                case "senseGrp":
                                    if (blnJeSense)
                                    {
                                        xw.WriteEndElement();                                                 //senses
                                    }
                                    if (blnJeSenseGrp)
                                    {
                                        xw.WriteEndElement();                                                 //senseGrp
                                    }
                                    blnJeSenseGrp = true;
                                    blnJeSense    = false;

                                    goto default;

                                case "sense":
                                    if (!blnJeSense)
                                    {
                                        xw.WriteStartElement("senses");
                                    }
                                    blnJeSense = true;

                                    goto default;

                                default:
                                    if (blnJeSense && r.Depth == 2 && !(r.Name == "sense"))
                                    {
                                        xw.WriteEndElement();                                                 //senses
                                        blnJeSense = false;
                                    }
                                    if (blnJeSenseGrp && r.Depth == 2 && !r.Name.StartsWith("sense"))
                                    {
                                        blnJeSenseGrp = false;
                                        xw.WriteEndElement();                                                 //senseGrp
                                    }
                                    DPXT.SerializeNode(r, xw);
                                    break;
                                }
                            }
                            else if (r.NodeType == XmlNodeType.EndElement)
                            {
                                if (r.Depth == 2)
                                {
                                    switch (r.Name)
                                    {
                                    case "senseGrp":
                                        /*
                                         * if (blnJeSense)
                                         * {
                                         *      xw.WriteEndElement(); //senseGrp
                                         *      blnJeSenseGrp = false;
                                         * }
                                         */
                                        //DPXT.SerializeNode(r, xw);
                                        break;

                                    case "sense":
                                        DPXT.SerializeNode(r, xw);
                                        break;

                                    default:
                                        if (blnJeSense)
                                        {
                                            xw.WriteEndElement();                                                     //senses
                                            blnJeSense = false;
                                        }
                                        DPXT.SerializeNode(r, xw);
                                        break;
                                    }
                                }
                                else
                                {
                                    DPXT.SerializeNode(r, xw);
                                }
                            }
                            else
                            {
                                DPXT.SerializeNode(r, xw);
                            }
                        }
                    }
                    catch (Exception ex)
                    {
                        sChyba = ex.Message;
                        sChyba = r.ReadInnerXml();
                        while (sChyba.Trim().Length == 0)
                        {
                            if (r.Read())
                            {
                                sChyba = r.ReadInnerXml();
                            }
                            else
                            {
                                sChyba = "XmlReader je na konci souboru.";
                            }
                        }
                        Console.WriteLine(sChyba);
                    }
                    finally
                    {
                        if (xw.WriteState != WriteState.Error && xw.WriteState != WriteState.Closed)
                        {
                            xw.WriteEndDocument();
                        }
                        xw.Flush();
                        xw.Close();
                    }
                }
            }
        }
Example #14
0
        public override void KonsolidovatHeslovouStat(string inputFile, string outputFile)
        {
            int    iEntry  = 0;
            string sSource = null;

            using (XmlReader r = Objekty.VytvorXmlReader(inputFile)) {
                using (XmlWriter xw = Objekty.VytvorXmlWriter(outputFile)) {
                    xw.WriteStartDocument(true);

                    while (r.Read())
                    {
                        if (r.NodeType == XmlNodeType.Element)
                        {
                            switch (r.Name)
                            {
                            case "entry":
                                XmlDocument xd = new XmlDocument();
                                XmlNode     xn = xd.ReadNode(r);
                                if (xn != null)
                                {
                                    xd.AppendChild(xn);
                                }
                                if (xd.DocumentElement != null)
                                {
                                    if (!xd.DocumentElement.IsEmpty)
                                    {
                                        if (ZkonsolidujEntry(ref xd, sSource, ++iEntry))
                                        {
                                            xd.WriteContentTo(xw);
                                        }
                                    }
                                }

                                break;

                            case "dictionary":
                                sSource = r.GetAttribute("name");
                                goto default;

                            default:
                                Transformace.SerializeNode(r, xw);
                                break;
                            }
                        }
                        else if (r.NodeType == XmlNodeType.EndElement)
                        {
                            switch (r.Name)
                            {
                            case "entry":
                                break;

                            default:
                                Transformace.SerializeNode(r, xw);
                                break;
                            }
                        }
                        else
                        {
                            Transformace.SerializeNode(r, xw);
                        }
                    }
                }
            }
        }
Example #15
0
        public CleaningResult Clean(string document)
        {
            CleaningResult result = new CleaningResult();

            string temp = Path.GetTempFileName();

            bool zpracovat = true;

            Queue <RunObject> runs = new Queue <RunObject>();

            RunObject previous = null;

            using (xmlReader = XmlReader.Create(document))
            {
                XmlNamespaceManager nsmgr = new XmlNamespaceManager(xmlReader.NameTable);

                nsmgr.AddNamespace("w", Pomucky.Dokument.RelWordprocessingRelationshipTypeW);

                using (xmlWriter = XmlWriter.Create(temp))
                {
                    xmlWriter.WriteStartDocument();

                    while (xmlReader.Read())
                    {
                        string nazev = xmlReader.Name;
Zacatek:
                        if (xmlReader.NodeType == XmlNodeType.Element)
                        {
                            if (!zpracovat)
                            {
                                break;
                            }
                            switch (nazev)
                            {
                            case "w:r":
                                RunObject   actual = new RunObject();
                                XmlDocument xd     = Objekty.ReadNodeAsXmlDocument(xmlReader);
                                actual.Xml = xd;
                                XmlNode node = xd.SelectSingleNode("/w:r/w:rPr[1]/w:rStyle/@w:val", nsmgr);
                                if (node == null)
                                {
                                    actual.Style = "Standardní písmo odstavce";
                                }
                                else
                                {
                                    actual.Style = node.Value;
                                }
                                XmlNode actualT = actual.Xml.SelectSingleNode("/w:r/w:t[1]", nsmgr);
                                if (actualT == null)                                         //jde o případy obrázku v dokumentu
                                {
                                    if (previous != null)
                                    {
                                        previous.Xml.Save(xmlWriter);
                                    }
                                    actual.Xml.Save(xmlWriter);
                                    actual = previous = null;
                                }
                                if (previous != null)
                                {
                                    if (previous.Style == actual.Style)
                                    {
                                        XmlNode prevT = previous.Xml.SelectSingleNode("/w:r/w:t[1]", nsmgr);
                                        prevT.InnerText += actualT.InnerText;
                                        if (prevT.InnerText[prevT.InnerText.Length - 1] == ' ' && prevT.Attributes["xml:space"] == null)
                                        {
                                            XmlAttribute at = previous.Xml.CreateAttribute("xml", "space", Objekty.XmlNamespace);
                                            at.Value = "preserve";
                                            prevT.Attributes.Append(at);
                                        }
                                        result.NumerOfChanges++;
                                    }
                                    else
                                    {
                                        previous.Xml.Save(xmlWriter);
                                        previous = actual;
                                    }
                                }
                                else
                                {
                                    previous = actual;
                                }
                                goto Zacatek;

                            default:
                                Transformace.SerializeNode(xmlReader, xmlWriter);
                                break;
                            }
                        }
                        else if (xmlReader.NodeType == XmlNodeType.EndElement)
                        {
                            if (nazev == "w:p")
                            {
                                if (previous != null)
                                {
                                    previous.Xml.Save(xmlWriter);
                                }
                                previous = null;
                            }
                            Transformace.SerializeNode(xmlReader, xmlWriter);
                        }
                        else
                        {
                            Transformace.SerializeNode(xmlReader, xmlWriter);
                        }
                    }

                    xmlWriter.WriteEndDocument();
                    xmlWriter.Close();
                }
            }

            result.Output  = temp;
            result.Success = true;
            return(result);
        }
Example #16
0
        public static void HeslarXml(string strVstupniSoubor, string strVystupniSoubor)
        {
            char[] chIndexy     = schIndexy;
            char[] chSeparatory = schSeparatory;

            using (XmlReader r = Objekty.VytvorXmlReader(strVstupniSoubor)) {
                using (XmlWriter xwHeslar = Objekty.VytvorXmlWriter(strVystupniSoubor)) {
                    xwHeslar.WriteStartDocument(true);
                    xwHeslar.WriteStartElement("heslar");

                    #region WHILE
                    while (r.Read())
                    {
                        if (r.NodeType == XmlNodeType.Element)
                        {
                            #region SWITCH
                            switch (r.Name)
                            {
                            case "dictionary":
                                string sSource = r.GetAttribute("name");
                                xwHeslar.WriteAttributeString("dictionary", sSource);
                                break;

                            case "div1":
                                xwHeslar.WriteStartElement("pismeno");
                                xwHeslar.WriteAttributeString("id", r.GetAttribute("id"));
                                xwHeslar.WriteAttributeString("text", r.GetAttribute("text"));
                                break;

                            /*
                             * case "entryref":
                             *       iHw = 0;
                             *       xwHeslar.WriteStartElement("heslovaStat");
                             *       sIdEntry = r.GetAttribute("id");
                             *       xwHeslar.WriteAttributeString("id", sIdEntry);
                             *       xwHeslar.WriteAttributeString("type", "ref");
                             *       break;
                             */
                            case "entry":
                                //iHw = 0;
                                xwHeslar.WriteStartElement("heslovaStat");
                                Transformace.SerializeAttributes(r, xwHeslar, false);
                                //sIdEntry = r.GetAttribute("id");
                                //xwHeslar.WriteAttributeString("id", sIdEntry);
                                //string sTypEntry = r.GetAttribute("type");
                                //if (null != sTypEntry)
                                //    xwHeslar.WriteAttributeString("type", sTypEntry);
                                break;

                            case "hwo":
                            case "hw":
                                //zkontrolovat, jestli odstavec obsahuje "nenáležitá podoba" - a pak heslo vyřadit/označit jako interní
                                //jenže akce následuje až za heslovým slovem
                                string sForma = r.GetAttribute("form");
                                string sHom   = r.GetAttribute("hom");
                                Transformace.SerializeNode(r, xwHeslar);
                                string strHeslo = r.ReadString();
                                strHeslo = strHeslo.Trim();
                                for (int i = 0; i < chIndexy.Length; i++)
                                {
                                    if (strHeslo.Contains(chIndexy[i].ToString()))
                                    {
                                        strHeslo = strHeslo.Remove(strHeslo.IndexOf(chIndexy[i]), 1);
                                        if (sHom == null)
                                        {
                                            xwHeslar.WriteAttributeString("hom", chIndexy[i].ToString());     //je potřeba to zapisovat, nebo ne?
                                        }
                                        break;
                                    }
                                }
                                if (strHeslo.IndexOf('-') == strHeslo.Length - 1 || strHeslo.IndexOf('-') == 0)
                                {
                                    if (sForma == null)
                                    {
                                        xwHeslar.WriteAttributeString("form", "short");
                                    }
                                }
                                if (strHeslo.Contains("(?)"))
                                {
                                    strHeslo = strHeslo.Replace("(?)", "");     //otazník v závorce za heslem
                                }
                                strHeslo = strHeslo.TrimEnd(chSeparatory);
                                strHeslo = strHeslo.TrimEnd();
                                //strHeslo = strHeslo.TrimEnd(chIndexy);
                                if (strHeslo.Length > 0)
                                {
                                    char chPismeno = strHeslo[0];
                                    if (chPismeno == '*' || chPismeno == '\u02E3')        //  || chPismeno == '\u02DF')  - zobrazovalo se špatně v IE
                                    //nemělo by se takové heslo upravit tak, že se odstraní první znak?
                                    {
                                        xwHeslar.WriteAttributeString("pref", strHeslo.Substring(0, 1));
                                    }

                                    xwHeslar.WriteString(strHeslo);
                                }

                                /*
                                 * while (r.Name != "")
                                 * {
                                 *       r.Read();
                                 * }
                                 *       SerializeNode(r, xwHeslar);
                                 */
                                /*
                                 * string sTyp = r.GetAttribute("type");
                                 * string strHeslo = r.ReadString();
                                 * strHeslo = strHeslo.Trim();
                                 * strHeslo = strHeslo.TrimEnd(chSeparatory);
                                 * strHeslo = strHeslo.TrimEnd();
                                 * string[] aHesla = strHeslo.Split(chSeparatory);
                                 * foreach (string s in aHesla) {
                                 *       string sText = s.Trim();
                                 *       if (s.Length > 0) {
                                 *                    xwHeslar.WriteStartElement("hw");
                                 *                    if (sTyp != null)
                                 *                              xwHeslar.WriteAttributeString("type",sTyp);
                                 ++iHw;
                                 *                    xwHeslar.WriteAttributeString("id", sIdEntry + ".hw" + iHw.ToString());
                                 *
                                 *                    xwHeslar.WriteString(sText);
                                 *                    xwHeslar.WriteEndElement();
                                 *       }
                                 * }
                                 */
                                break;
                            }
                            #endregion
                        }
                        #region IF2
                        if (r.NodeType == XmlNodeType.EndElement)
                        {
                            switch (r.Name)
                            {
                            case "div1":
                                xwHeslar.WriteEndElement();
                                break;

                            case "entry":
                                xwHeslar.WriteEndElement();
                                break;

                            case "hwo":
                            case "hw":
                                xwHeslar.WriteEndElement();
                                break;
                            }
                        }
                        #endregion
                    }
                    #endregion
                }
            }
        }
Example #17
0
        /// <summary>
        /// Upraví hranice heslové stati. Ohraničí jednotlivé části značkou &lt;entry&gt; a v rámci heslové stati seskupí významy podřazené značce &lt;senseGrp&gt;.
        /// </summary>
        public override void UpravitHraniceHesloveStati(string inputFile, string outputFile)
        {
            if (inputFile == null || outputFile == null)
            {
                throw new ArgumentNullException("Nebyly zadány vhodné názvy vstupního nebo výstupního souboru.");
            }
            using (XmlReader r = Objekty.VytvorXmlReader(inputFile))
            {
                using (XmlWriter xw = Objekty.VytvorXmlWriter(outputFile))
                {
                    xw.WriteStartDocument(true);
                    bool           blnPrvniEntryhead          = true;
                    bool           blnVyskytlySeVyznamy       = false;
                    string         strTypSenseGrp             = null;
                    Stack <string> gstTypSenseGrp             = new Stack <string>();
                    int            intPocetOtevrenychSenseGrp = 0;
                    bool           blnPrvniVyznam             = false;
                    int            xmlReaderDepp = 0;
                    int            xmlWriterDeep = 0;

                    while (r.Read())
                    {
                        //Console.WriteLine("Reader: {0}, Writer: {1}", xmlReaderDepp, xmlWriterDeep);
                        if (r.NodeType == XmlNodeType.Element)
                        {
                            xmlReaderDepp++;
                            if (r.IsEmptyElement)
                            {
                                xmlReaderDepp--;
                            }
                            if (r.Name == "div1")
                            {
                                string name = r.Name;
                            }
                            switch (r.Name)
                            {
                            case "entryhead":
                                if (blnPrvniVyznam)
                                {
                                    WriteEndElement(xw, ref xmlWriterDeep);                                              //senses
                                    xw.WriteWhitespace("\r\n");
                                }
                                blnPrvniVyznam       = false;
                                blnVyskytlySeVyznamy = false;
                                int iPocetSenseGrp = gstTypSenseGrp.Count;
                                if (iPocetSenseGrp > 0)
                                {
                                    for (int i = 1; i < iPocetSenseGrp; i++)
                                    {
                                        intPocetOtevrenychSenseGrp--;
                                        WriteEndElement(xw, ref xmlWriterDeep);                                                  //senseGrp
                                        xw.WriteWhitespace("\r\n");
                                    }
                                    gstTypSenseGrp.Clear();
                                }
                                while (intPocetOtevrenychSenseGrp > 0)
                                {
                                    WriteEndElement(xw, ref xmlWriterDeep);
                                    xw.WriteWhitespace("\r\n");
                                    intPocetOtevrenychSenseGrp--;
                                }
                                if (!blnPrvniEntryhead)
                                {
                                    WriteEndElement(xw, ref xmlWriterDeep);                                             //entry
                                    xw.WriteWhitespace("\r\n");
                                }
                                else
                                {
                                    blnPrvniEntryhead = false;
                                }
                                WriteStartElement(xw, "entry", ref xmlWriterDeep);

                                xw.WriteWhitespace("\r\n");
                                goto default;

                            case "senseGrp":
                                strTypSenseGrp = r.GetAttribute("type");
                                intPocetOtevrenychSenseGrp++;
                                if (gstTypSenseGrp.Count > 0)
                                {
                                    if (strTypSenseGrp == gstTypSenseGrp.Peek())
                                    {
                                        WriteEndElement(xw, ref xmlWriterDeep);                                                  //senseGrp
                                        xw.WriteWhitespace("\r\n");
                                        intPocetOtevrenychSenseGrp--;
                                    }
                                    else
                                    {
                                        if (blnVyskytlySeVyznamy)
                                        {
                                            WriteEndElement(xw, ref xmlWriterDeep);
                                            xw.WriteWhitespace("\r\n");
                                            intPocetOtevrenychSenseGrp--;
                                        }
                                        else
                                        {
                                            gstTypSenseGrp.Push(strTypSenseGrp);
                                        }
                                    }
                                }
                                else
                                {
                                    gstTypSenseGrp.Push(strTypSenseGrp);
                                }
                                blnVyskytlySeVyznamy = false;
                                goto default;

                            case "sense":
                                if (!blnPrvniVyznam)
                                {
                                    WriteStartElement(xw, "senses", ref xmlWriterDeep);                                             //xw.WriteStartElement("senses");
                                    xw.WriteWhitespace("\r\n");
                                    blnPrvniVyznam = true;
                                }
                                blnVyskytlySeVyznamy = true;
                                goto default;

                            case "note":
                            case "appendix":
                                if (r.IsEmptyElement)
                                {
                                    goto default;
                                }
                                while (gstTypSenseGrp.Count > 0)
                                {
                                    //xw.WriteEndElement();
                                    WriteEndElement(xw, ref xmlWriterDeep);
                                    xw.WriteWhitespace("\r\n");
                                    intPocetOtevrenychSenseGrp--;
                                    gstTypSenseGrp.Pop();
                                }
                                if (blnPrvniVyznam)
                                {
                                    //xw.WriteEndElement(); //senses
                                    WriteEndElement(xw, ref xmlWriterDeep);
                                    xw.WriteWhitespace("\r\n");
                                    blnPrvniVyznam = false;
                                }
                                goto default;

                            default:
                                if (!r.IsEmptyElement)
                                {
                                    xmlWriterDeep++;
                                }
                                DPXT.SerializeNode(r, xw);
                                break;
                            }
                        }
                        else
                        {
                            if (r.NodeType == XmlNodeType.EndElement)
                            {
                                xmlReaderDepp--;
                                switch (r.Name)
                                {
                                case "senseGrp":
                                    if (blnPrvniVyznam)
                                    {
                                        //xw.WriteEndElement(); //senses
                                        WriteEndElement(xw, ref xmlWriterDeep);
                                        xw.WriteWhitespace("\r\n");
                                        blnPrvniVyznam = false;
                                    }
                                    break;

                                case "div1":
                                    //xw.WriteEndElement(); //entry
                                    while (xmlWriterDeep > xmlReaderDepp + 1)
                                    {
                                        WriteEndElement(xw, ref xmlWriterDeep);
                                    }

                                    blnPrvniEntryhead = true;
                                    blnPrvniVyznam    = false;
                                    goto default;

                                default:
                                    xmlWriterDeep--;
                                    DPXT.SerializeNode(r, xw);
                                    break;
                                }
                            }
                            //else if (r.NodeType == XmlNodeType.XmlDeclaration && r.Name == "xml") {
                            //  //nedělat nic, jde o začátek dokumentu; genruje cyhbu: nelze zapsat deklaraci, dokument již byl započat
                            //}

                            else
                            {
                                DPXT.SerializeNode(r, xw);
                            }
                        }
                    }
                }
            }
        }