Beispiel #1
0
        static int Main(string[] args)
        {
            // Check if a command line argument was specified
            if (args.Length == 0)
            {
                System.Console.WriteLine("Please specify an XBRL instance file.");
                return(1);
            }

            // Load XBRL instance into memory
            Altova.RaptorXml.ErrorLog log;
            var instance = Xbrl.Instance.CreateFromUrl(args[0], out log);

            // Check for validation errors
            if (instance == null || log.HasErrors)
            {
                // Report validation errors
                System.Console.WriteLine(String.Format("Failed to load XBRL instance file {0}.", args[0]));
                foreach (var error in log)
                {
                    System.Console.WriteLine(error.Text);
                }
                return(1);
            }

            var concept = GetAssetsConcept(instance.Dts);

            if (concept == null)
            {
                System.Console.WriteLine("Taxonomy does not contain an Assets concept.");
                return(1);
            }

            // Find all US-GAAP Assets facts in the XBRL instance (filter instance facts by the concept aspect)
            var cs = new Xbrl.ConstraintSet();

            cs.Concept = new Xbrl.ConceptAspectValue(concept);
            var facts = instance.Facts.Filter(cs);

            System.Console.WriteLine(String.Format("Found {0} Assets facts.", facts.Count));
            foreach (Xbrl.Item fact in facts)
            {
                System.Console.WriteLine(String.Format("Assets fact in context {0} has the effective numeric value {1}.", fact.Context.Id, fact.EffectiveNumericValue));
            }
            System.Console.WriteLine();

            return(0);
        }
Beispiel #2
0
        static int Main(string[] args)
        {
            // Check if a command line argument was specified
            if (args.Length == 0)
            {
                System.Console.WriteLine("Please specify an XBRL instance file.");
                return(1);
            }

            // Load XBRL instance into memory
            Altova.RaptorXml.ErrorLog log;
            var instance = Xbrl.Instance.CreateFromUrl(args[0], out log);

            // Check for validation errors
            if (instance == null || log.HasErrors)
            {
                // Report validation errors
                System.Console.WriteLine(String.Format("Failed to load XBRL instance file {0}.", args[0]));
                foreach (var error in log)
                {
                    System.Console.WriteLine(error.Text);
                }
                return(1);
            }

            // Find all duplicate contexts
            var contextDict = new Dictionary <Xbrl.ConstraintSet, Xbrl.Context>();

            foreach (var context in instance.Contexts)
            {
                var cs = new Xbrl.ConstraintSet(context);
                try
                {
                    contextDict.Add(cs, context);
                }
                catch (ArgumentException)
                {
                    System.Console.WriteLine(String.Format("Context {0} is a duplicate of context {1}.", context.Id, contextDict[cs].Id));
                }
            }
            System.Console.WriteLine();

            return(0);
        }
Beispiel #3
0
        static int Main(string[] args)
        {
            // Check if a command line argument was specified
            if (args.Length == 0)
            {
                System.Console.WriteLine("Please specify an XBRL instance file.");
                return(1);
            }

            // Load XBRL instance into memory
            Altova.RaptorXml.ErrorLog log;
            var instance = Xbrl.Instance.CreateFromUrl(args[0], out log);

            // Check for validation errors
            if (instance == null || log.HasErrors)
            {
                // Report validation errors
                System.Console.WriteLine(String.Format("Failed to load XBRL instance file {0}.", args[0]));
                foreach (var error in log)
                {
                    System.Console.WriteLine(error.Text);
                }
                return(1);
            }

            var assetsConcept = GetUsGaapConcept(instance.Dts, "Assets");

            if (assetsConcept == null)
            {
                System.Console.WriteLine("Taxonomy does not contain an Assets concept.");
                return(1);
            }
            var liabilitiesConcept = GetUsGaapConcept(instance.Dts, "LiabilitiesAndStockholdersEquity");

            if (liabilitiesConcept == null)
            {
                System.Console.WriteLine("Taxonomy does not contain an LiabilitiesAndStockholdersEquity concept.");
                return(1);
            }

            // Find all US-GAAP Assets facts in the XBRL instance (filter instance facts by the concept aspect)
            var cs = new Xbrl.ConstraintSet();

            cs.Concept = new Xbrl.ConceptAspectValue(assetsConcept);
            var assetsFacts = instance.Facts.Filter(cs);

            foreach (Xbrl.Item assetsFact in assetsFacts)
            {
                // Find all instance facts that share the same aspect values as the current assetsFact apart from the concept aspect.
                cs         = new Xbrl.ConstraintSet(assetsFact);
                cs.Concept = new Xbrl.ConceptAspectValue(liabilitiesConcept);
                var liabilitiesFacts = instance.Facts.Filter(cs);

                foreach (Xbrl.Item liabilitiesFact in liabilitiesFacts)
                {
                    System.Console.WriteLine(String.Format("Assets                           fact in context {0} has the effective numeric value {1}.", assetsFact.Context.Id, assetsFact.EffectiveNumericValue));
                    System.Console.WriteLine(String.Format("LiabilitiesAndStockholdersEquity fact in context {0} has the effective numeric value {1}.", liabilitiesFact.Context.Id, liabilitiesFact.EffectiveNumericValue));
                    System.Console.WriteLine();
                }
            }

            return(0);
        }