public override List <LogicalModel.Validation.ValidationRuleResult> Validate(List <String> messages) { var results = new List <LogicalModel.Validation.ValidationRuleResult>(); messages = messages == null ? new List <String>() : messages; if (Taxonomy != null) { Logger.WriteLine("Validating Instance started"); messages.Add(String.Format("Validation started at {0:" + Utilities.Converters.DateTimeFormat + "}", DateTime.Now)); var nsm = Utilities.Xml.GetTaxonomyNamespaceManager(this.XmlDocument); var nsitems = nsm.GetNamespacesInScope(XmlNamespaceScope.Local); var schemas = new Dictionary <string, string>(); var xbrltaxdoc = (XBRLProcessor.Models.XbrlTaxonomyDocument)Taxonomy.EntryDocument; schemas.Add(xbrltaxdoc.LocalPath, xbrltaxdoc.TargetNamespace); foreach (var nsitem in nsitems) { var key = nsitem.Value; var doc = Taxonomy.GetDocumentByTargetNamespace(key); if (doc != null && !String.IsNullOrEmpty(key)) { if (!schemas.ContainsKey(doc.LocalPath)) { schemas.Add(doc.LocalPath, key); } } else { } } var schemavalidator = new XBRLProcessor.SchemaValidation(); //schemavalidator.ValidateInstance(this.XmlDocument, schemas, messages); results.AddRange(base.Validate(messages)); messages.Add(String.Format("Validation finished at {0:" + Utilities.Converters.DateTimeFormat + "}", DateTime.Now)); var json_validationresults = Utilities.Converters.ToJson(results); //Utilities.FS.WriteAllText(Taxonomy.CurrentInstanceValidationResultPath, "var currentvalidationresults = " + json_validationresults + ";"); Utilities.FS.WriteAllText(Taxonomy.CurrentInstanceValidationResultPath, json_validationresults); var sb = new StringBuilder(); foreach (var message in messages) { sb.AppendLine(message); } sb.AppendLine(); sb.AppendLine(); sb.AppendLine("Validation Errors JSON:"); sb.AppendLine(json_validationresults); if (System.IO.File.Exists(this.FullPath)) { var validationresultfilepath = this.FullPath.Remove(this.FullPath.LastIndexOf(".")); validationresultfilepath = validationresultfilepath + ".ValidationResults.txt"; Utilities.FS.WriteAllText(validationresultfilepath, sb.ToString()); } Logger.WriteLine("Validating Instance finished"); } else { messages.Add(String.Format("Can't load Taxonomy {0}", this.SchemaRef)); } return(results); }