private void ResolveExternalEntityReplacementText (DTDEntityBase decl) { if (decl.SystemId != null && decl.SystemId.Length > 0) { // FIXME: not always it should be read in Element context XmlTextReader xtr = new XmlTextReader (decl.LiteralEntityValue, XmlNodeType.Element, null); xtr.SkipTextDeclaration (); if (decl is DTDEntityDeclaration && DTD.EntityDecls [decl.Name] == null) { // GE - also checked as valid contents StringBuilder sb = new StringBuilder (); xtr.Normalization = this.Normalization; xtr.Read (); while (!xtr.EOF) sb.Append (xtr.ReadOuterXml ()); decl.ReplacementText = sb.ToString (); } else // PE decl.ReplacementText = xtr.GetRemainder ().ReadToEnd (); } else decl.ReplacementText = decl.LiteralEntityValue; }