private void MergeDiscoveredTaxonomy(string fn, Taxonomy depTax, out int numErrors ) { numErrors = 0; if (this.dependantTaxonomyFilenames.Contains(fn)) return; dependantTaxonomyFilenames.Add(fn); dependantTaxonomies.Add(depTax); this.infos.Add(new TaxonomyItem(depTax.GetTargetNamespace(), depTax.schemaFile, depTax.GetNSPrefix(), depTax.IsAucentExtension, depTax.DefinesCustomTypes)); ArrayList tmp; //merge the presentation, calculation, definition linkbases... if (!this.innerTaxonomy) { presentationInfo = MergePresentations(presentationInfo, depTax.presentationInfo, out tmp); depTax.presentationInfo = null; if (tmp.Count > 0) { numErrors += tmp.Count; errorList.AddRange(tmp); } calculationInfo = MergePresentations(calculationInfo, depTax.calculationInfo, out tmp); if (tmp.Count > 0) { numErrors += tmp.Count; errorList.AddRange(tmp); } if (this.netDefinisionInfo == null) { this.netDefinisionInfo = depTax.netDefinisionInfo; } else { netDefinisionInfo.MergeDimensionLinks(depTax.netDefinisionInfo, out tmp); if (tmp.Count > 0) { numErrors += tmp.Count; errorList.AddRange(tmp); } } } }
private string CreateMergedTaxonomyFileNameFromInstanceDocumentMultiple(Instance instanceDoc, bool promptUser, string baseHref) { StringBuilder taxonomyNameSpace = new StringBuilder(); StringBuilder prefix = new StringBuilder(); StringBuilder importStatement = new StringBuilder(); string linkbaseStatement = instanceDoc.GetEmbeddedLinkbaseInfo(); foreach (string loc in instanceDoc.schemaRefs) { string location = ApplyBaseHRef(baseHref, loc); Taxonomy t = new Taxonomy(); if (t.Load(location, promptUser) > 0) return string.Empty; t.GetNSPrefix(); prefix.Append(t.nsPrefix); taxonomyNameSpace.Append(t.TargetNamespace); string href = ApplyBaseHRef(baseHref, t.schemaFile); //CEE 2009-05-28: Clean up the & within "W R Grace & Company" //Remove 1 level of encoding, and then reapply it. href = href.Replace( "&", "&" ).Replace( "&", "&" ); importStatement.Append(string.Format(@"<import namespace=""{0}"" schemaLocation=""{1}"" />", t.TargetNamespace, href ) ); importStatement.Append(Environment.NewLine); } string fileName = "Temp_" + DateTime.Now.Ticks.ToString() + "_Merged.xsd"; fileName = Path.Combine(System.Environment.CurrentDirectory, fileName); string taxonomyFileInfo = string.Format(Taxonomy.WrapperTaxonomyTemplate, taxonomyNameSpace.ToString(), prefix.ToString(), importStatement.ToString(), linkbaseStatement); StreamWriter sw = new StreamWriter(fileName, false); sw.Write(taxonomyFileInfo); sw.Close(); return fileName; }