internal FDO.IText BuildText(XmlNode textDefn) { if (textDefn.Name != "Text") return null; m_textDefn = textDefn; // 1. Create the new text and give it an owner. m_text = this.CreateText(); textDefn.Attributes["id"].Value = m_text.Hvo.ToString(); XmlNode name = textDefn.SelectSingleNode("Name5/AUni"); // 2. If we have a name, set it. if (name != null && name.InnerText.Length > 0) { string wsAbbr = XmlUtils.GetOptionalAttributeValue(name, "ws"); int ws = 0; if (wsAbbr != null) ws = m_cache.ServiceLocator.WritingSystemManager.GetWsFromStr(wsAbbr); if (ws == 0) ws = m_cache.DefaultVernWs; this.SetName(name.InnerText, ws); } // 3. Create a body for the text; XmlNode contents = textDefn.SelectSingleNode("Contents5054/StText"); if (contents == null) return m_text; IStText body = this.CreateContents(m_text); // 4. Create each paragraph for the text. XmlNodeList paragraphs = contents.SelectNodes("Paragraphs14/StTxtPara"); if (paragraphs != null) { foreach (XmlNode paraDef in paragraphs) { ParagraphBuilder pb = new ParagraphBuilder(m_cache, m_text.ContentsOA.ParagraphsOS); IStTxtPara realPara = pb.BuildParagraphContent(paraDef); } } return m_text; }