Wednesday, February 2, 2011

Next Up: Essence-Alias Arcs

The first plan for the next CTP is to support essence-alias arcs as defined in section of the XBRL spec. The XBRL-CONF-CR3-2007-03-05 conformance suite used in the largest of the Gepsio unit tests contains 17 examples of valid and invalid XBRL documents using the essence-alias arc, and the current Gepsio CTP does not pass all of the 17 tests (in fact, is passes the first five of the 17 essence-alias tests, but that’s pure coincidence, since those documents are marked as valid and Gepsio is currently not looking at essence-alias constructs).

This task will also lay some groundwork for removing more hardcoded parsing of XBRL schema elements. You may remember that the Feb 2011 CTP moved Gepsio from the hardcoded interpretation of schema elements over to support provided by the XmlSchema and XmlSchemaSet classes in the .NET Framework. While this work was successful and led to a drastic improvement in Gepsio’s honoring of complex XBRL taxonomies, the definition arcs are still currently interpreted without the help of the .NET Framework. Any of the definition arcs found in the <appinfo> element of a schema are manually discovered and interpreted. This includes the footnote and calculation arcs that Gepsio already supports.

Gepsio’s support for the essence-alias arcs will be implemented based on their discovery within a compiled XmlSchemaSet (once I figure out where schema appinfo is buried inside the XmlSchemaSet object graph). Once Gepsio can find and interpret essence-alias appinfo within a compiled XmlSchemaSet, the design pattern will exist to allow the eventual refactoring of the existing appinfo support code to use similar constructs.

While I am on the subject of refactoring, I must tip my virtual hat to the XBRL-CONF-CR3-2007-03-05 conformance suite. It has been an invaluable tool in ensuring that Gepsio is behaving as the XBRL spec mandates. I don’t think that I would have taken on the work of moving from a manually interpreted XBRL schema to a schema interpreted by .NET for the Feb 2011 CTP if I weren’t confident that the conformance suite would catch errors that I introduced during that refactoring process. If I ever were to implement another specification like XBRL, I would certainly ensure that a conformance suite is available to validate my work. The importance of unit testing through a conformance suite published by the specification committee cannot be overstated.

No comments:

Post a Comment