The purpose of
this class is to help people understand and create XBRL taxonomies. An XBRL
taxonomy is somewhat of a “vocabulary” or "dictionary" which
describes data contained in an XBRL instance document. An XBRL Instance
document is somewhat of a “database” of financial statement information issued
by an entity.
This material is intended for
“semi-technical” audiences with some technical participants and some
non-technical participants. The technical audiences should be using the XBRL
technical specification for definitive answers to any issues. If there is any
conflict between the technical specification and this information, clearly the
technical specification is definitive source of information.
This
information is intended for:
a)
Technical
developers who desire to get the “big picture” of XBRL.
b)
Anyone
else who desires to obtain a “big picture” understanding of XBRL.
c)
Non-technical
domain experts who need to talk to technical developers about XBRL.
d)
Semi-technical
accountants who wish to act as consultants, working with technical developers
to build XBRL based solutions.
e)
Semi-technical
and non-technical domain experts who wish to build taxonomies.
Objectives
The objectives this material is to provide the user
with the following:
a) An
understanding of the information contained in the XBRL specification for
creating taxonomies.
b) A
general understanding of XML Schema.
c) A
general understanding of XBRL instance documents.
d) The
ability to thoroughly understand the CI taxonomy, which will provide insight as
to how to create other XBRL taxonomies.
e) The
ability to create common taxonomy components or “patterns”.
f) The
ability to reverse engineer the CI taxonomy components in order to figure out
how to create the more complicated taxonomy components for taxonomy you is
creating.
g) Provide
you with an understanding of the best practices you should consider using when
building taxonomy.
h) Teach
you how to use the XBRL Taxonomy Builder to assist you in creating taxonomies.
XML
101
Overview
XML is a general
specification for creating computer markup languages. XML has its roots in SGML
which was developed in 1986.
XML is:
a)
A self-describing, extensible
(extendable), messaging format which can be used for many different things.
b)
A universally agreed upon way of doing
things one-way, which are currently being done in 100s of different ways.
c)
Turns information from a “blob” of
meaningless text into a “database” of identifiable and accessible information.
d)
A technology that is fundamentally
changing the Internet and computer software.
Sample
The following is a
sample of XML:
<?xml
version="1.0"?>
<PurchaseOrder>
<Header>
<Customer>
<Name> John
Doe</Name>
<Address>PO Box
99</Address>
<City>New
York</City>
<State>NY</State>
<ZipCode>12345</ZipCode>
</Customer>
</Header>
<Line>
<Quantity>1</Quantity>
<Item>Blue
Sled</Item>
<Price>22.00</Price>
</Line>
<Line>
<Quantity>1</Quantity>
<Item>Red
Wagon</Item>
<Price>43.00</Price>
</Line>
</PurchaseOrder>
The following is
another sample of XML, which is constructed using XBRL:
<?xml
version="1.0"?>
<!-- Created by XBRL
Export Utility -->
<group
id="A1" entity="Great Plains Software, Inc."
type="statement">
<group
type="statements.accountantsReport">
<item
type="reportDate.date">June 19,1998</item>
</group>
</group>
Namespaces and
Qnames (Qualified Names)
Namespaces are important concepts
to understand in XML and XBRL. This is a very powerful feature which is not
well explained and not fully implemented; it seems, by the W3C.
Namespaces
Namespaces basically solve the
problem of two groups creating different taxonomies but use the same name
within that taxonomy. When a namespace is added to an element, it makes that
element unique, even when mixed with another taxonomy which has the same name.
For example,
Example
Explanation
<p> P is used by HTML and could
be used by other taxonomies
<html:p> Namespace
identifies that this is an html paragraph.
The following is sample syntax on
how to indicate the namespace prefix for a namespace:
<group
xmlns:xbrl="http://www.xbrl.org/us/us-gaap-ci-2000-07-31">
Qnames
(Qualified Names)
Namespaces
are also valid to use within the value of text. When you do so, you create what
is called a qualified name. A qualified name or Qname is an element value which
has a namespace within it. For example: <group
entity="NASDAQ:GPSI"> Within this fragment, “NASDAQ:GPSI” is the
value of the entity attribute. The “NASDAQ:” makes this value a Qname. “NASDAQ”
is the value of the namespace prefix. The namespace prefix used in Qnames must
be defined as a namespace prior to being used in the document, within an
element or parent of the element containing the namespace prefix.
Other
Important Terms
The following are some basic
terms you should understand when working with XML:
a)
Element
b)
Attribute
c)
Parent
d)
Child
e)
Node
f)
Valid
g)
DTD/XML
Schema
h) Well-formed
Understanding
Camel Case
Camel case is a
widely accepted standard syntax for expressing XML and other things like
programming code, database fields, etc. Camel case is widely used in Visual
Basic, C++, and Java programming. XBRL specifies that XBRL syntax must be camel
Case. XML is case sensitive. Rather than have some people represent information
like “THIS_OR_THAT”, and others like “This or that”, and others like
“thisorthat”, we will all agree to express it like, “thisOrThat”.
Note that XML is case
sensitive. ThisOrThat, thisorthat, and THISORTHAT are different names to an XML
parser.
In summary, the rules
for Camel Case as used in XBRL are as follows:
a) All
words begin with lower case
b) The
first letter of each new word is capitalized
c) The
“_” (underscore) or the “-“ is not used to separate words, capitalization is.
Examples of Camel
Case:
a) cashAndMarketableSecurities
b) nowIsTheTimeForAllGoodMenToComeToTheAidOfTheirCountry
The author is a tax domain consultant for the couple of years. He is currently writing about different aspects of XBRL Software, Office Management Software and Online TDS Software.


