Пример #1
0
        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);
                    }

                }
            }
        }
Пример #2
0
        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;
        }