コード例 #1
0
        private void ZkonsolidujEntry(ref XmlDocument xd, string sSlovnikID, int iEntry)
        {
            if (xd.DocumentElement == null)
            {
                return;
            }
            //Přiřadí heslové stati identifikátor
            XmlAttribute xa = xd.CreateAttribute("id");

            xa.Value = "en" + iEntry.ToString("000000");
            xd.DocumentElement.Attributes.Append(xa);

            //Přiřadí heslové stati zdroj (z jakého slovníku pochází)
            xa       = xd.CreateAttribute("source");
            xa.Value = sSlovnikID;
            xd.DocumentElement.Attributes.Append(xa);

            //Zjišťuje typ heslové stati (uvedený v atributu type u značky entryhead)

            XmlNode xn = xd.SelectSingleNode("//entryhead");

            if (xn != null)
            {
                //Pokud existuje atibut type existuje, jeho hodnota se přiřadí ke značce entry
                if (xn.Attributes.Count == 1)
                {
                    xa = (XmlAttribute)xn.Attributes[0].Clone();
                    xd.DocumentElement.Attributes.Append(xa);
                    //nakonec se atribut type u značky entryhead odstraní (byl tam jenom kvůli generování z Wordu)
                    xn.Attributes.Remove(xn.Attributes[0]);
                }
                else
                {
                    //pokud entryhead atribut nemá, jde o plnohodnotnou heslovou stať
                    xa       = xd.CreateAttribute("type");
                    xa.Value = "full";
                    xd.DocumentElement.Attributes.Append(xa);
                }
            }
            //heslové stati se přiřadí výchozí heslové slovo
            //TODO mělo by se dávat pozor na zkrácené podoby?
            xn       = xd.SelectSingleNode("//hw");
            xa       = xd.CreateAttribute("defaulthw");
            xa.Value = xn.InnerText.TrimEnd(Slovnik.CarkaTeckaMezeraStrednik).TrimEnd();
            xd.DocumentElement.Attributes.Append(xa);

            string sVychoziHeslo = xa.Value;

            xa       = xd.CreateAttribute("defaulthwsort");
            xa.Value = Slovnik.HesloBezKrizkuAHvezdicky(sVychoziHeslo);
            xd.DocumentElement.Attributes.Append(xa);


            //každému heslovému slovu se přiřadí identifikátor
            XmlNodeList xnl = xd.SelectNodes("//hw");

            for (int i = 0; i < xnl.Count; i++)
            {
                string sIdHw = (i + 1).ToString();
                xa       = xd.CreateAttribute("id");
                xa.Value = "en" + iEntry.ToString("000000") + ".hw" + sIdHw;
                xnl[i].Attributes.Append(xa);
                string sHeslo = xnl[i].InnerText;

                //identifikovat číslo homonyma
                int iHomonymum = sHeslo.IndexOfAny(Slovnik.IndexyCislic);
                if (iHomonymum > 0)
                {
                    string sHomonymum = sHeslo.Substring(iHomonymum, 1);
                    xa       = xd.CreateAttribute("hom");
                    xa.Value = sHomonymum;
                    xnl[i].Attributes.Append(xa);
                }
            }
        }
コード例 #2
0
ファイル: HesSvoboda.cs プロジェクト: daliboris/ITJakub
        private bool ZkonsolidujEntry(ref XmlDocument xd, string sSlovnikID, int iEntry)
        {
            if (xd.DocumentElement == null)
            {
                return(false);
            }
            //Přiřadí heslové stati identifikátor
            XmlAttribute xa = xd.CreateAttribute("id");

            xa.Value = "en" + iEntry.ToString("000000");
            xd.DocumentElement.Attributes.Append(xa);

            //Přiřadí heslové stati zdroj (z jakého slovníku pochází)
            xa       = xd.CreateAttribute("source");
            xa.Value = sSlovnikID;
            xd.DocumentElement.Attributes.Append(xa);

            //Zjišťuje typ heslové stati (uvedený v atributu type u značky entryhead)

            XmlNode xn = xd.SelectSingleNode("//entryhead");

            if (xn != null)
            {
                //Pokud existuje atibut type existuje, jeho hodnota se přiřadí ke značce entry
                if (xn.Attributes.Count == 1)
                {
                    xa = (XmlAttribute)xn.Attributes[0].Clone();
                    xd.DocumentElement.Attributes.Append(xa);
                    //nakonec se atribut type u značky entryhead odstraní (byl tam jenom kvůli generování z Wordu)
                    xn.Attributes.Remove(xn.Attributes[0]);
                }
                else
                {
                    //pokud entryhead atribut nemá, jde o plnohodnotnou heslovou stať
                    xa       = xd.CreateAttribute("type");
                    xa.Value = "full";
                    xd.DocumentElement.Attributes.Append(xa);
                }
            }
            //heslové stati se přiřadí výchozí heslové slovo
            //TODO mělo by se dávat pozor na zkrácené podoby?
            xn       = xd.SelectSingleNode("//hw");
            xa       = xd.CreateAttribute("defaulthw");
            xa.Value = xn.InnerText.TrimEnd(Slovnik.CarkaTeckaMezeraStrednik).TrimEnd();
            string sVychoziHeslo = xa.Value;

            xd.DocumentElement.Attributes.Append(xa);

            xa       = xd.CreateAttribute("defaulthwsort");
            xa.Value = Slovnik.HesloBezKrizkuAHvezdicky(sVychoziHeslo);
            xd.DocumentElement.Attributes.Append(xa);


            Daliboris.Slovniky.Svoboda.Index hsSvoboda        = new Daliboris.Slovniky.Svoboda.Index();
            Daliboris.Slovniky.Svoboda.Index.HeslovaSlova hss = hsSvoboda.AnalyzujHeslo(xd, sVychoziHeslo, ref iEntry);

            if (hss.Count == 0 || hss[0].Odkaz || hss[0].Transliterace)
            {
                return(false);
            }
            else
            {
                return(true);
            }
        }
コード例 #3
0
ファイル: StcS.cs プロジェクト: daliboris/ITJakub
        private void ZkonsolidujEntry(ref XmlDocument xd, string sSlovnikID, int iEntry)
        {
            if (xd.DocumentElement == null)
            {
                return;
            }
            //Přiřadí heslové stati identifikátor
            XmlAttribute xa = xd.CreateAttribute("id");

            xa.Value = "en" + iEntry.ToString("000000");
            xd.DocumentElement.Attributes.Append(xa);

            //Přiřadí heslové stati zdroj (z jakého slovníku pochází)
            xa       = xd.CreateAttribute("source");
            xa.Value = sSlovnikID;
            xd.DocumentElement.Attributes.Append(xa);

            //Zjišťuje typ heslové stati (uvedený v atributu type u značky entryhead)

            XmlNode xn = xd.SelectSingleNode("//entryhead");

            if (xn != null)
            {
                //Pokud existuje atibut type existuje, jeho hodnota se přiřadí ke značce entry
                if (xn.Attributes.Count == 1)
                {
                    xa = (XmlAttribute)xn.Attributes[0].Clone();
                    xd.DocumentElement.Attributes.Append(xa);
                    //nakonec se atribut type u značky entryhead odstraní (byl tam jenom kvůli generování z Wordu)
                    xn.Attributes.Remove(xn.Attributes[0]);
                }
                else
                {
                    //pokud entryhead atribut nemá, jde o plnohodnotnou heslovou stať
                    xa       = xd.CreateAttribute("type");
                    xa.Value = "full";
                    xd.DocumentElement.Attributes.Append(xa);
                }
            }
            //heslové stati se přiřadí výchozí heslové slovo
            //TODO mělo by se dávat pozor na zkrácené podoby?
            xn       = xd.SelectSingleNode("//hw");
            xa       = xd.CreateAttribute("defaulthw");
            xa.Value = xn.InnerText.TrimEnd(chInterpunkceBezZavorek).TrimEnd();
            xd.DocumentElement.Attributes.Append(xa);
            string sVychoziHeslo = xa.Value;

            xa       = xd.CreateAttribute("defaulthwsort");
            xa.Value = Slovnik.HesloBezKrizkuAHvezdicky(sVychoziHeslo);
            xd.DocumentElement.Attributes.Append(xa);

            //každému heslovému slovu se přiřadí identifikátor
            XmlNodeList xnl = xd.SelectNodes("//hw");

            for (int i = 0; i < xnl.Count; i++)
            {
                string sIdHw = (i + 1).ToString();
                xa       = xd.CreateAttribute("id");
                xa.Value = "en" + iEntry.ToString("000000") + ".hw" + sIdHw;
                xnl[i].Attributes.Append(xa);
            }

            /*
             * XmlNode xnPredchozi = null;
             * XmlNodeList xnlSenseGrp = xd.SelectNodes(".//senseGrp");
             * if (xnlSenseGrp != null && xnlSenseGrp.Count > 0) {
             *
             *      foreach (XmlNode xnSenseGrp in xnlSenseGrp) {
             *
             *              XmlNodeList xnlSubSenseGrp = xnSenseGrp.SelectNodes(".//senseGrp");
             *              if (xnlSubSenseGrp != null && xnlSubSenseGrp.Count > 0)
             *              {
             *                      foreach (XmlNode node in xnlSubSenseGrp)
             *                      {
             *                              SeskupitSensesVRamciSenseGrp(xd, node, xnPredchozi);
             *                      }
             *              }
             *              else {
             *                      SeskupitSensesVRamciSenseGrp(xd, xnSenseGrp, xnPredchozi);
             *              }
             *      }
             * }
             * else {
             *      //seskupí více významových odstavců do jednoho elementu
             *      foreach (XmlNode nsense in xd.DocumentElement.ChildNodes) {
             *              if (nsense.Name == "sense") {
             *                      xnPredchozi = nsense.PreviousSibling;
             *                      break;
             *              }
             *      }
             *
             *      xnl = xd.SelectNodes("//sense");
             *      if (xnl.Count > 0) {
             *              XmlElement xe = xd.CreateElement("senses");
             *              foreach (XmlNode x in xnl) {
             *                      xe.AppendChild(x);
             *              }
             *              xd.DocumentElement.InsertAfter(xe, xnPredchozi);
             *      }
             * }
             */
        }