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