XBRL GL Taxonomy Framework Technical Architecture 2015

Recommendation 25 March 2015

Copyright © 2014, 2015 XBRL International Inc., All Rights Reserved.

This version:
<http://www.xbrl.org/Specification/GLTFTA/REC-2015-03-25/GLTFTA-REC-2015-03-25.html>
Editor:
Gianluca Garbellotto, Iphix LLC <gg@iphix.net>
Contributors:
Eric E. Cohen, PricewaterhouseCoopers LLP <eric.e.cohen@us.pwc.com>
Masatomo Goto, Fujitsu Limited <mg@jp.fujitsu.com>
Toshimitsu Suzuki, Fujitsu Limited <tsuzu@jp.fujitsu.com>

Status

Circulation of this Recommendation is unrestricted. This document is normative. Recipients are invited to submit comments to gl-feedback@xbrl.org, and to submit notification of any relevant patent rights of which they are aware and provide supporting documentation.

Abstract

This document describes the technical architecture of journal focussed taxonomies using the Extensible Business Reporting Language [XBRL] – commonly known as XBRL GL. The recommended architecture establishes rules and conventions that assist in comprehension, usage and performance among different journal focussed taxonomies.

This document assumes use of the XBRL 2.1 Specification.

Table of Contents

1 Language independence
2 Introduction
2.1 Scope of the architecture
2.2 Terminology and document conventions
3 The structure of the GL Taxonomy Framework
3.1 Requirements/Motivation
3.2 Structure
3.3 Namespaces
3.4 Content Models
3.5 Control over the modification of content models
3.5.1 Modification prohibited at any level
3.5.2 Modification permitted only by authors of new modules
3.5.3 Modification permitted by taxonomy extenders
3.6 Directory structure
4 How to create extensions within the GL Taxonomy Framework
4.1 Public extensions
4.2 Private extensions

Appendices

A References
B Intellectual property status (non-normative)
C Document history (non-normative)
D Errata corrections in this document

Tables

1 Terminology used in this document
2 Namespaces defined by the XBRL-GL Taxonomy Framework

Figures

1 High level conceptual view of the taxonomy framework
2 Comparison of two different "compiled" versions
3 Folder structure for the GL Taxonomy Framework

Examples

1 A non-normative example
2 A non-normative counterexample
3 "Palette" schema (gl-plt-2015-03-25.xsd) that imports the COR schema
4 Fragment of the COR schema (gl-cor-content-2015-03-25.xsd) that contains content model declarations and imports the BUS, MUC and USK module schemas
5 Fragment of the COR schema (gl-cor-2015-03-25.xsd) that contains the element declarations
6 Fragment of the COR schema (gl-cor-content-2015-03-25.xsd) that contains content model declarations and imports only the BUS module schema
7 entryDetail content model declaration in the COR schema (gl-cor-content-2015-03-25.xsd) that does not reference any other modules
8 entryDetail content model declaration in the COR schema (gl-cor-content-2015-03-25.xsd) that references the BUS module
9 entryDetail content model declaration in the COR schema (gl-cor-content-2015-03-25.xsd) that references the BUS and MUC modules


1 Language independence

The official language of XBRL International's own work products is English and the preferred spelling convention is UK English.

2 Introduction

2.1 Scope of the architecture

This document defines the technical architecture of the XBRL GL taxonomy. It is strictly limited to aspect related to the organisation of the technical artefacts (schemas, linkbases etc.) and does not address any issues related to how the concepts defined in the taxonomy should be used or applied.

2.2 Terminology and document conventions

Terminology used in XBRL frequently overlaps with terminology from other fields.

Table 1: Terminology used in this document
Architecture “The fundamental organization of a system embodied by its components, their relationships to each other and to the environment and the principles guiding its design and evolution. This definition may just as usefully be applied to technical architecture” [IEEE]. This document describes in the form of design rules the organization of journal-focussed reporting taxonomies embodied by schemas, linkbases, concepts, links, and other components, their relationships to each other and to financial reporting standards, and principles that justify the design rules both for base taxonomies and for the extensions that will inevitably follow. Contrast this with the IEEE definition of Software Engineering: “A systematic approach to developing, using, maintaining and liquidating systems;” this document does not cover approaches to development, use, maintenance or liquidation of taxonomies.
abstract element, ancestor, base set, bind, child, concept, concrete element, context, duplicate items, duplicate tuples, element, entity, essence concept, fact, fully conforming, instance, item, least common ancestor, linkbase, minimally conforming, parent, period, sibling, taxonomy, taxonomy schema, tuple, unit As defined in XBRL 2.1 specification.
MUST, MUST NOT, REQUIRED, SHALL, SHALL NOT, SHOULD, SHOULD NOT, MAY, OPTIONAL See [RFC2119] for definitions of these and other terms. These include, in particular: SHOULD Conforming documents and applications are encouraged to behave as described. MUST Conforming documents and consuming applications are required to behave as described; otherwise they are in error.
DTS Discoverable Taxonomy Set As defined in XBRL 2.1 specification [XBRL].
base DTS/extension DTS An extension DTS is a DTS that is a proper superset of a base DTS. Because an extension must be a proper superset, a DTS is not an extension of itself.
extended-type link As defined by the XML Linking Language [XLINK]. XBRL linkbases are made up of extended-type links.
GLTFTA GL Taxonomy Framework Technical Architecture: the set of rules described in this document.
LRR Link Role Registry. An online listing of XLink role and arc role attribute values that MAY appear in XBRL International acknowledged and approved taxonomies, along with structured information about their purpose, usage, and any intended impact on XBRL instance validation [LRR].
Module An XBRL International recommendation that depends on XBRL and defines the syntax and semantics of additional elements, attributes, roles or arc roles that cannot be defined entirely within an XBRL valid taxonomy.
Persisting DTS (persisting extension) A DTS whose purpose is to be stored as files to be referenced by instances of multiple entities and published in some fashion for users to examine. This contrasts with a DTS that is ephemeral—for example, dynamically created while processing instances, only to be discarded.
source The source of an arc is the element indicated by the “from” attribute.
target The target of an arc is the element indicated by the “to” attribute.
Taxonomy status: Acknowledged/Approved/Recommended This is non normative; see the Taxonomy Recognition Process [TRP]: Acknowledged: XBRL International recognizes that the taxonomy is technically in compliance with all appropriate specifications. Approved: In addition to being Acknowledged, XBRL International warrants that the taxonomy was developed in an open fashion and it complies with all best practices for compatibility. Recommended: In addition to being approved, XBRL International singles out a Recommended taxonomy as being the one preferred for a given type of reporting. Financial reporting taxonomies are not expected to achieve this status from XBRL International since it is not the custodian of the financial reporting standards themselves.
version control A version control system maintains an organized set of all the versions of files that are made over time. Version control systems allow people to go back to previous revisions of individual files, and to compare any two revisions to view the changes between them.
XBRL XBRL 2.1 Recommendation, with corrected errata to 2008-07-02 [XBRL].
XBRL valid XML instances and schemas that satisfy the syntax requirements of XBRL.

The following highlighting is used for non-normative examples in this document:

Example 1: A non-normative example

Text of the non-normative example.

The following highlighting is used for non-normative counterexamples in this document:

Example 2: A non-normative counterexample

Text of the non-normative counterexample.

Italics are used for rhetorical emphasis only and do not convey any special normative meaning.

3 The structure of the GL Taxonomy Framework

3.1 Requirements/Motivation

The XBRL GL taxonomy framework has been designed to support all the constructs that were provided by the XBRL 2.0 and 2.0a compliant versions of the taxonomy but using the 2.1 version of the XBRL Specification [XBRL]. XBRL GL requires a highly tuple based taxonomy architecture. The way in which XBRL 2.1 supports this is significantly different from that in which XBRL 2.0 and 2.0a supports it. In the previous versions of the specification the content model of tuples was defined by means of constructs in the definition linkbase. In version 2.1 the XML Schema [SCHEMA-1] content modelling mechanism is employed for this purpose. This creates a new challenge when it comes to extensibility of a tuple’s content model since such extensibility is not well supported in XML Schema and thus an architecture that permits this is necessary.

3.2 Structure

The architecture employed to support the requirements stated in the previous section requires a set of interrelated schema documents that when assembled or compiled together form, with the associated linkbases, of course, an XBRL taxonomy. Diagrammatically this can be represented thus:

Figure 1: High level conceptual view of the taxonomy framework
XBRL GL architecture diagram

Each box in the above diagram represents one schema file. This framework allows for the element declarations of the elements in each module of the framework to remain fixed but the content models to be extensible. The element declaration schema files are not valid schemas in their own right but are included (by means of an <include>) in the content model declaration files which, together, form a valid schema. The various content model files also import (by means of an <import>) other namespaces as appropriate where they need to in order to reference elements from those namespaces.

Tying it all together is a “palette” schema (marked XBRL GL in ) that does nothing more than <import> the appropriate version of the GL-COR schema for the application for which this is being used.

To better understand this consider two examples presented here side by side:

Figure 2: Comparison of two different "compiled" versions
XBRL GL architecture examples

The first (leftmost) of these shows how a taxonomy that uses elements from four modules (COR, MUC, BUS and USK) is compiled: the second (rightmost) shows how a taxonomy that uses elements from just two of the modules (COR and BUS) is compiled.

The naming convention is that the schema files that contain the content model declarations are named gl-cor-content-2015-03-25.xsd, gl-muc-content-2015-03-25.xsd etc., those that contain the element declarations are named gl-cor-2015-03-25.xsd, gl-muc-xsd etc. The file containing the “palette” schema is gl-plt-2015-03-25.xsd

Some XML code fragments might make this clearer.

Example 3: "Palette" schema (gl-plt-2015-03-25.xsd) that imports the COR schema

<schema
  xmlns
="http://www.w3.org/2001/XMLSchema"
targetNamespace="http://www.xbrl.org/int/gl/plt/2015-03-25" elementFormDefault="qualified" attributeFormDefault="unqualified">
<import namespace="http://www.xbrl.org/int/gl/cor/2015-03-25" schemaLocation="gl-cor-content-2015-03-25.xsd"/>
</schema>

Example 4: Fragment of the COR schema (gl-cor-content-2015-03-25.xsd) that contains content model declarations and imports the BUS, MUC and USK module schemas

<schema
  xmlns:xbrli
="http://www.xbrl.org/2003/instance"

  xmlns:gl-cor
="http://www.xbrl.org/int/gl/cor/2015-03-25"

  xmlns
="http://www.w3.org/2001/XMLSchema"

  xmlns:gl-bus
="http://www.xbrl.org/int/gl/bus/2015-03-25"

  xmlns:xbrll
="http://www.xbrl.org/2003/linkbase"

  xmlns:gl-muc
="http://www.xbrl.org/int/gl/muc/2015-03-25"

  xmlns:xlink
="http://www.w3.org/1999/xlink"

  xmlns:gl-usk
="http://www.xbrl.org/int/gl/usk/2015-03-25"
targetNamespace="http://www.xbrl.org/int/gl/cor/2015-03-25" elementFormDefault="qualified" attributeFormDefault="unqualified">
<import namespace="http://www.xbrl.org/2003/instance" schemaLocation="http://www.xbrl.org/2003/xbrl-instance-2003-12-31.xsd"/>
<import namespace="http://www.xbrl.org/int/gl/bus/2015-03-25" schemaLocation="gl-bus-content-2015-03-25.xsd"/>
<import namespace="http://www.xbrl.org/int/gl/muc/2015-03-25" schemaLocation="gl-muc-content-2015-03-25.xsd"/>
<import namespace="http://www.xbrl.org/int/gl/usk/2015-03-25" schemaLocation="gl-usk-content-2015-03-25.xsd"/>
<include schemaLocation="../../cor/gl-cor-2015-03-25.xsd"/>
... Complex type definitions for elements in the version of the COR module that requires elements from the BUS, MUC and USK schemas ...
</schema>

Note that in Example 4 there is an <include> that brings in the element definitions for the elements whose content models are defined in this schema.

Example 5: Fragment of the COR schema (gl-cor-2015-03-25.xsd) that contains the element declarations

<schema
  xmlns:xbrli
="http://www.xbrl.org/2003/instance"

  xmlns:gl-cor
="http://www.xbrl.org/int/gl/cor/2015-03-25"

  xmlns
="http://www.w3.org/2001/XMLSchema"

  xmlns:xbrll
="http://www.xbrl.org/2003/linkbase"

  xmlns:xlink
="http://www.w3.org/1999/xlink"

  xmlns:gl-gen
="http://www.xbrl.org/int/gl/gen/2015-03-25"
elementFormDefault="qualified" targetNamespace="http://www.xbrl.org/int/gl/cor/2015-03-25" attributeFormDefault="unqualified">
<annotation>
<appinfo>
<xbrll:linkbaseRef xlink:type="simple" xlink:arcrole="http://www.w3.org/1999/xlink/properties/linkbase" xlink:href="gl-cor-presentation.xml" xlink:title="Presentation Links, all" xlink:role="http://www.xbrl.org/2003/role/presentationLinkbaseRef"/>
<xbrll:linkbaseRef xlink:type="simple" xlink:arcrole="http://www.w3.org/1999/xlink/properties/linkbase" xlink:href="gl-cor-label.xml" xlink:title="Label Links, all" xlink:role="http://www.xbrl.org/2003/role/labelLinkbaseRef"/>
</appinfo>
</annotation>
<import namespace="http://www.xbrl.org/2003/instance" schemaLocation="http://www.xbrl.org/2003/xbrl-instance-2003-12-31.xsd"/>
<import namespace="http://www.xbrl.org/int/gl/gen/2015-03-25" schemaLocation="../gen/gl-gen-2015-03-25.xsd"/>
... Element declarations for elements in the COR module ...
</schema>

Note that in Example 5 the references to the relevant linkbases (presentation and label) are present since they are independent of the content model for the elements. Only the element declarations are present - there is no content model defined for the elements. As a consequence, this schema file is not a valid schema in its own right – it is simply a necessary part of the whole schema for the COR namespace that gets incorporated into the complete namespace definition as a result of being <include>d as in Example 4 and Example 6.

The <import> of the namespace http://www.xbrl.org/int/gl/gen/2015-03-25 defined in gl-gen-2015-03-25.xsd should be noted here. This contains type definitions that are used in various modules and which MUST NOT be altered by anyone extending the taxonomy (see Section 3.5 for further explanation).

Example 6: Fragment of the COR schema (gl-cor-content-2015-03-25.xsd) that contains content model declarations and imports only the BUS module schema

<schema
  xmlns:xbrli
="http://www.xbrl.org/2003/instance"

  xmlns:gl-cor
="http://www.xbrl.org/int/gl/cor/2015-03-25"

  xmlns
="http://www.w3.org/2001/XMLSchema"

  xmlns:gl-bus
="http://www.xbrl.org/int/gl/bus/2015-03-25"

  xmlns:xbrll
="http://www.xbrl.org/2003/linkbase"

  xmlns:xlink
="http://www.w3.org/1999/xlink"
elementFormDefault="qualified" targetNamespace="http://www.xbrl.org/int/gl/cor/2015-03-25" attributeFormDefault="unqualified">
<import namespace="http://www.xbrl.org/2003/instance" schemaLocation="http://www.xbrl.org/2003/xbrl-instance-2003-12-31.xsd"/>
<import namespace="http://www.xbrl.org/int/gl/bus/2015-03-25" schemaLocation="gl-bus-content-2015-03-25.xsd"/>
<include schemaLocation="../../cor/gl-cor-2015-03-25.xsd"/>
... Complex type definitions for elements in the version of the COR module that requires elements from the BUS schema ...
</schema>

Note in Example 6 how the <import> of the MUC and USK modules is not present (compare with Example 4).

3.3 Namespaces

This section enumerates and describes the namespaces used in the GL Taxonomy Framework. Except where indicated these namespaces will be modified by those extending the taxonomy if they need to extend the content models of elements declared in those namespaces. The rules governing what types of modifications are permitted are given in Section 4 below.

Table 2: Namespaces defined by the XBRL-GL Taxonomy Framework
Namespace Recommended prefix Description
http://www.xbrl.org/int/gl/gen/2015-03-25 gl-gen Defined in gl-gen-2015-03-25.xsd. This namespace contains type definitions that MUST NOT be changed by anyone extending the taxonomy. No elements are defined in this namespace.
http://www.xbrl.org/int/gl/bus/2015-03-25 gl-bus Defined in gl-bus-2015-03-25.xsd and gl bus-content-2015-03-25.xsd. This namespace contains element declarations and content model definitions that are relevant to the BUS module of the XBRL GL taxonomy.
http://www.xbrl.org/int/gl/cor/2015-03-25 gl-cor Defined in gl-cor-2015-03-25.xsd and gl cor-content-2015-03-25.xsd. This namespace contains element declarations and content model definitions that are relevant to the COR module of the XBRL GL taxonomy.
http://www.xbrl.org/int/gl/muc/2015-03-25 gl-muc Defined in gl-muc-2015-03-25.xsd and gl muc-content-2015-03-25.xsd. This namespace contains element declarations and content model definitions that are relevant to the MUC module of the XBRL GL taxonomy.
http://www.xbrl.org/int/gl/plt/2015-03-25 gl-plt Defined in gl-plt-2015-03-25.xsd. This is the targetNamespace of the palette taxonomy defined in gl-plt-2015-03-25.xsd. There are no elements of types defined in this namespace and, as such, it does not serve any particular purpose except to provide a targetNamespace for the palette schema document.
http://www.xbrl.org/gl/int/taf/2015-03-25 gl-taf Defined in gl-taf-2015-03-25.xsd and gl taf-content-2015-03-25.xsd. This namespace contains element declarations and content model definitions that are relevant to the TAF module of the XBRL GL taxonomy.
http://www.xbrl.org/int/gl/usk/2015-03-25 gl-usk Defined in gl-usk-2015-03-25.xsd and gl usk-content-2015-03-25.xsd. This namespace contains element declarations and content model definitions that are relevant to the USK module of the XBRL GL taxonomy.
http://www.xbrl.org/gl/int/srcd/2015-03-25 gl-srcd Defined in gl-srcd-2015-03-25.xsd and gl-srcd-content-2015-03-25.xsd. This namespace contains element declarations and content model definitions that are relevant to the Summary Reporting Contextual Data (SRCD) module of the XBRL GL taxonomy.

3.4 Content Models

The schema files that contain the content models (gl-cor-content-2015-03-25.xsd etc.) will differ depending on which modules are in use for the specific application. The differences are in which other namespaces are <import>ed and in the content models themselves. The content models are defined in type declarations and the set of type declarations will not change (as they are simply the types for the elements that are declared in the element declaration schema files and those do not change), only the actual content models themselves will change.

The following 3 examples show how one complex type declaration (entryDetailComplexType, which defines the content model for the <gl-cor:entryDetail> element) varies depending on which modules are in use.

Example 7: entryDetail content model declaration in the COR schema (gl-cor-content-2015-03-25.xsd) that does not reference any other modules

<complexType name="entryDetailComplexType" id="gl-cor_entryDetailComplexType">
<complexContent>
<restriction base="anyType">
<sequence>
<element minOccurs="0" ref="gl-cor:lineNumber"/>
<element minOccurs="0" ref="gl-cor:lineNumberCounter"/>
<element maxOccurs="unbounded" minOccurs="0" ref="gl-cor:account"/>
<element minOccurs="0" ref="gl-cor:amount"/>
<element minOccurs="0" ref="gl-cor:signOfAmount"/>
<element minOccurs="0" ref="gl-cor:debitCreditCode"/>
<element minOccurs="0" ref="gl-cor:postingDate"/>
<element maxOccurs="unbounded" minOccurs="0" ref="gl-cor:identifierReference"/>
<element minOccurs="0" ref="gl-cor:documentType"/>
<element minOccurs="0" ref="gl-cor:invoiceType"/>
<element minOccurs="0" ref="gl-cor:documentNumber"/>
<element minOccurs="0" ref="gl-cor:documentApplyToNumber"/>
<element minOccurs="0" ref="gl-cor:documentReference"/>
<element minOccurs="0" ref="gl-cor:documentDate"/>
<element minOccurs="0" ref="gl-cor:postingStatus"/>
<element maxOccurs="unbounded" minOccurs="0" ref="gl-cor:xbrlInfo"/>
<element minOccurs="0" ref="gl-cor:detailComment"/>
<element minOccurs="0" ref="gl-cor:dateAcknowledged"/>
<element minOccurs="0" ref="gl-cor:confirmedDate"/>
<element maxOccurs="1" minOccurs="0" ref="gl-cor:shipFrom"/>
<element minOccurs="0" ref="gl-cor:shipReceivedDate"/>
<element minOccurs="0" ref="gl-cor:maturityDate"/>
<element minOccurs="0" ref="gl-cor:terms"/>
<element maxOccurs="unbounded" minOccurs="0" ref="gl-cor:taxes"/>
</sequence>
<attribute name="id" type="ID"/>
</restriction>
</complexContent>
</complexType>

Example 8: entryDetail content model declaration in the COR schema (gl-cor-content-2015-03-25.xsd) that references the BUS module

<complexType name="entryDetailComplexType" id="gl-cor_entryDetailComplexType">
<complexContent>
<restriction base="anyType">
<sequence>
<element minOccurs="0" ref="gl-cor:lineNumber"/>
<element minOccurs="0" ref="gl-cor:lineNumberCounter"/>
<element maxOccurs="unbounded" minOccurs="0" ref="gl-cor:account"/>
<element minOccurs="0" ref="gl-cor:amount"/>
<element minOccurs="0" ref="gl-cor:signOfAmount"/>
<element minOccurs="0" ref="gl-cor:debitCreditCode"/>
<element minOccurs="0" ref="gl-cor:postingDate"/>
<element minOccurs="0" ref="gl-bus:amountMemo"/>
<element minOccurs="0" ref="gl-bus:allocationCode"/>
<element maxOccurs="unbounded" minOccurs="0" ref="gl-cor:identifierReference"/>
<element minOccurs="0" ref="gl-cor:documentType"/>
<element minOccurs="0" ref="gl-cor:invoiceType"/>
<element minOccurs="0" ref="gl-cor:documentNumber"/>
<element minOccurs="0" ref="gl-cor:documentApplyToNumber"/>
<element minOccurs="0" ref="gl-cor:documentReference"/>
<element minOccurs="0" ref="gl-cor:documentDate"/>
<element minOccurs="0" ref="gl-bus:documentReceivedDate"/>
<element minOccurs="0" ref="gl-bus:documentChargeReimb"/>
<element minOccurs="0" ref="gl-bus:documentLocation"/>
<element minOccurs="0" ref="gl-bus:paymentMethod"/>
<element minOccurs="0" ref="gl-cor:postingStatus"/>
<element maxOccurs="unbounded" minOccurs="0" ref="gl-cor:xbrlInfo"/>
<element minOccurs="0" ref="gl-cor:detailComment"/>
<element minOccurs="0" ref="gl-cor:dateAcknowledged"/>
<element minOccurs="0" ref="gl-cor:confirmedDate"/>
<element maxOccurs="1" minOccurs="0" ref="gl-cor:shipFrom"/>
<element minOccurs="0" ref="gl-cor:shipReceivedDate"/>
<element minOccurs="0" ref="gl-cor:maturityDate"/>
<element minOccurs="0" ref="gl-cor:terms"/>
<element maxOccurs="unbounded" minOccurs="0" ref="gl-bus:measurable"/>
<element maxOccurs="unbounded" minOccurs="0" ref="gl-bus:jobInfo"/>
<element maxOccurs="unbounded" minOccurs="0" ref="gl-bus:depreciationMortgage"/>
<element maxOccurs="unbounded" minOccurs="0" ref="gl-cor:taxes"/>
</sequence>
<attribute name="id" type="ID"/>
</restriction>
</complexContent>
</complexType>

Note the inclusion of references to element declarations in the gl-bus namespace in Example 8.

Example 9: entryDetail content model declaration in the COR schema (gl-cor-content-2015-03-25.xsd) that references the BUS and MUC modules

<complexType name="entryDetailComplexType" id="gl-cor_entryDetailComplexType">
<complexContent>
<restriction base="anyType">
<sequence>
<element minOccurs="0" ref="gl-cor:lineNumber"/>
<element minOccurs="0" ref="gl-cor:lineNumberCounter"/>
<element maxOccurs="unbounded" minOccurs="0" ref="gl-cor:account"/>
<element minOccurs="0" ref="gl-cor:amount"/>
<element minOccurs="0" ref="gl-muc:amountCurrency"/>
<element minOccurs="0" ref="gl-muc:amountOriginalExchangeRateDate"/>
<element minOccurs="0" ref="gl-muc:amountOriginalAmount"/>
<element minOccurs="0" ref="gl-muc:amountOriginalCurrency"/>
<element minOccurs="0" ref="gl-muc:amountOriginalExchangeRate"/>
<element minOccurs="0" ref="gl-muc:amountOriginalExchangeRateSource"/>
<element maxOccurs="unbounded" minOccurs="0" ref="gl-muc:amountOriginalExchangeRateComment"/>
<element minOccurs="0" ref="gl-muc:amountOriginalTriangulationAmount"/>
<element minOccurs="0" ref="gl-muc:amountOriginalTriangulationCurrency"/>
<element minOccurs="0" ref="gl-muc:amountOriginalTriangulationExchangeRate"/>
<element minOccurs="0" ref="gl-muc:amountOriginalTriangulationExchangeRateSource"/>
<element minOccurs="0" ref="gl-muc:amountOriginalTriangulationExchangeRateType"/>
<element minOccurs="0" ref="gl-muc:originalTriangulationExchangeRate"/>
<element minOccurs="0" ref="gl-muc:originalExchangeRateTriangulationSource"/>
<element minOccurs="0" ref="gl-muc:originalExchangeRateTriangulationType"/>
<element minOccurs="0" ref="gl-cor:signOfAmount"/>
<element minOccurs="0" ref="gl-cor:debitCreditCode"/>
<element minOccurs="0" ref="gl-cor:postingDate"/>
<element minOccurs="0" ref="gl-bus:amountMemo"/>
<element minOccurs="0" ref="gl-bus:allocationCode"/>
<element maxOccurs="unbounded" minOccurs="0" ref="gl-muc:multicurrencyDetail"/>
<element maxOccurs="unbounded" minOccurs="0" ref="gl-cor:identifierReference"/>
<element minOccurs="0" ref="gl-cor:documentType"/>
<element minOccurs="0" ref="gl-cor:invoiceType"/>
<element minOccurs="0" ref="gl-cor:documentNumber"/>
<element minOccurs="0" ref="gl-cor:documentApplyToNumber"/>
<element minOccurs="0" ref="gl-cor:documentReference"/>
<element minOccurs="0" ref="gl-cor:documentDate"/>
<element minOccurs="0" ref="gl-bus:documentReceivedDate"/>
<element minOccurs="0" ref="gl-bus:documentChargeReimb"/>
<element minOccurs="0" ref="gl-bus:documentLocation"/>
<element minOccurs="0" ref="gl-bus:paymentMethod"/>
<element minOccurs="0" ref="gl-cor:postingStatus"/>
<element maxOccurs="unbounded" minOccurs="0" ref="gl-cor:xbrlInfo"/>
<element minOccurs="0" ref="gl-cor:detailComment"/>
<element minOccurs="0" ref="gl-cor:dateAcknowledged"/>
<element minOccurs="0" ref="gl-cor:confirmedDate"/>
<element maxOccurs="1" minOccurs="0" ref="gl-cor:shipFrom"/>
<element minOccurs="0" ref="gl-cor:shipReceivedDate"/>
<element minOccurs="0" ref="gl-cor:maturityDate"/>
<element minOccurs="0" ref="gl-cor:terms"/>
<element maxOccurs="unbounded" minOccurs="0" ref="gl-bus:measurable"/>
<element maxOccurs="unbounded" minOccurs="0" ref="gl-bus:jobInfo"/>
<element maxOccurs="unbounded" minOccurs="0" ref="gl-bus:depreciationMortgage"/>
<element maxOccurs="unbounded" minOccurs="0" ref="gl-cor:taxes"/>
</sequence>
<attribute name="id" type="ID"/>
</restriction>
</complexContent>
</complexType>

Note the inclusion of references to element declarations in both the gl-bus and the gl-muc namespaces in Example 9.

3.5 Control over the modification of content models

The architecture described here provides different levels of control over the ability of those who may wish to extend the base taxonomy in how they may or may not modify content models. There are three levels of control that naturally result from this architecture as follows:

3.5.1 Modification prohibited at any level

There are a few content models (which are defined as XML Schema types. e.g. documentTypeItemType) of general utility which are unchangeable by anyone who wishes to extend the taxonomy. These are defined in the schema file gl-gen-2015-03-25.xsd in the namespace http://www.xbrl.org/int/gl/gen/2015-03-25. Since they are defined here they MUST NOT be modified by anyone extending the taxonomy. By being included in this namespace these types become available for use unmodified throughout the entire taxonomy.

3.5.2 Modification permitted only by authors of new modules

Some content models are not of general utility but are specific to particular modules. However, the author of the module may wish to prevent their being altered by anyone further extending the taxonomy or adding a new module. In this case they can be defined in the element definition schema relevant to that module (e.g. gl-xxx-2015-03-25.xsd for the XXX module) rather than in the content module schema (e.g. gl-xxx-content-2015-03-25.xsd for the XXX module). Since they are defined here they MUST NOT be modified by anyone extending the taxonomy. By being included in this namespace these types become available for use unmodified in any extension that references the module in question.

3.5.3 Modification permitted by taxonomy extenders

In many cases the content models of both items and tuples may be such that the taxonomy author anticipates they will need to be modified as part of some taxonomy extension performed by someone else. Typical situations of this kind would be the addition of new possibilities to an enumerated list or modifications of the content model of a tuple such as those exemplified in Section 3 above. In this case the type declaration that defines the content model will be placed in the relevant gl xxx content-2015-03-25.xsd file which MAY be modified by anyone extending the taxonomy provided they follow the rules for extending taxonomies defined in Section 4 below.

3.6 Directory structure

Figure 3: Folder structure for the GL Taxonomy Framework
XBRL GL directory structure

shows the folder structure for the GL Taxonomy Framework. It is important to maintain this structure and to follow its pattern when extending the taxonomy so as to be able to resolve relative references to the various components of the taxonomy. The 7 folders (bus, cor, gen, muc, taf, usk and srcd) each contain 3 files (except for gen where there is only the schema file) named gl-xxx-2015-03-25.xsd, gl-xxx-2015-03-25-label.xml and gl xxx-2015-03-25 presentation.xml where xxx is the same 3 characters as the name of the folder itself. These files are the element declarations (and unchangeable content model declarations if any) and the label and presentation linkbase for the module XXX. The bus, cor, muc, taf, usk and srcd folders contain a lang folder where the labels in different languages are located. The file name for the English label linkbase is gl-xxx-2015-03-25-label.xml; additional languages are named gl-xxx-2015-03-25-label-yy.xml where yy is the prefix that identifies each language.

Under the plt folder are a series of sub-folders each named case followed by a series of single characters separated by a “-”. The single characters are used to identify which modules are brought together to form a complete taxonomy. Which one of these to use (i.e. which combination of modules) will be determined by the functionality that is required by the user of the taxonomy. In each of these sub folders are the file gl-plt-2015-03-25.xsd and a set of content model schema files named gl-xxx-content-2015-03-25.xsd (where xxx is the 3 character code for the module in question). Thus, for example, the files in the case-c-b-m folder are gl-plt-2015-03-25.xsd, gl-cor-content-2015-03-25.xsd, gl-bus-content-2015-03-25.xsd, and gl-muc-content-2015-03-25.xsd.

4 How to create extensions within the GL Taxonomy Framework

The mechanism for creating extensions within this framework, while utilising the extensibility features built into the XBRL Specification, requires additional steps from those normally followed when creating extensions to monolithic taxonomies because of the modular nature and compilation based architecture employed. As such, taxonomy building software tools MAY implement assistance for this workflow to assist those seeking to create extensions. If support is not built into such tools then a manual process using XML (or simply text) editing software will be necessary.

As experience is gained with building such extensions and with the use of this taxonomy in general, a set of rules and restrictions related to the building of extensions will become apparent and will be codified either in this document or elsewhere (still to be determined).

4.1 Public extensions

A public extension is a new module that is intended to be incorporated into the published framework and become part of that framework. It will typically be created by XBRL International although, since it is anticipated that other organisations might seek to create such extensions and submit them to XBRL International for inclusion in the framework, the process is documented here.

The steps involved in creating a public extension are as follows (note that in the following xxx is the 3 character code for the module being created, yyyy-mm-dd is the desired publication date for the module):

  1. Select a palette taxonomy (gl-plt-2015-03-25.xsd) and the all the gl-xxx-content-2015-03-25.xsd content model declaration schemas from one of the provided combinations, choosing the combination that most closely resembles the desired end product of the exercise.
  2. Create a new subdirectory of “plt” (called case-x-y-z where x, y and z, and additional letters if necessary, represent the modules involved) and copy these files into this directory.
  3. Create a new taxonomy representing the module you wish to create, add concept definitions and create the lang folder and the linkbases. Note that complexType definitions must be defined as global complexTypes. If the tool has the capability, save the element declarations and the complexType definitions into separate files in separate directories (i.e., as..\..\xxx\gl-xxx-yyyy-mm-dd.xsd and .\gl-xxx-content=yyyy-mm-dd.xsd), save the linkbase files into the directory ..\..\xxxx and go to step 8, otherwise save them in the same file .\gl-xxx-yyy-mm-dd.xsd and proceed to perform steps 4-7 manually.
  4. Separate the taxonomy into gl-xxx-yyyy-mm-dd.xsd and gl-xxx-content-yyyy-mm-dd.xsd with the former containing the element declarations and the latter the content model declarations that are relevant to the new module.
  5. Create the directory ..\..\xxx and move gl-xxx-yyyy-mm-dd.xsd and the linkbase files into that directory.
  6. Add an <include> statement in gl-xxx-content-yyyy.mm-dd.xsd to include gl-xxx-yyyy-mm-dd.xsd
  7. Change all necessary relative paths in the linkbase files and the gl-xxx-yyyy-mm-dd.xsd schema file.
  8. Edit each gl-xxx-content-yyyy-mm-dd.xsd in the palette directory as necessary to incorporate any concepts from the new module into the appropriate content models (this will usually be content models for elements declared in gl-cor-content-yyyy-mm-dd.xsd).
  9. Ensure that presentation links in the newly created presentation linkbase reflect the content model modifications made in step 8.

4.2 Private extensions

A private extension is one that is for use in a closed system and not published generally. Different mechanisms, rules and restrictions apply than for public extensions. Those seeking to create private extensions should follow the usual XBRL extension process with the following points to note:

  1. Changes to XBRL International owned namespaces MUST ADD elements from the private extension taxonomy into the content models defined in the palette taxonomy that is being extended.
  2. Changes to XBRL International owned namespaces MUST NOT remove any elements from the content models defined in the palette taxonomy that is being extended.
  3. Private extensions MUST NOT alter any of the officially supplied palette directories. i.e., any changes to XBRL International namespaces MUST be effected in a palette directory that is newly created for the purpose of the extension. Files from officially supplied palette directories MAY be copied into this new palette directory as necessary.

Appendix A References

IEEE
Institute of Electrical and Electronic Engineers (IEEE). "IEEE Standard 610.12-1990 - IEEE Standard Glossary of Software Engineering Terminology, 1990"
(See http://www.ieee.org/)
LRR
XBRL International Inc. (XII). "XBRL Link Role Registry, Public Working Draft 28 October 2004"
Walter Hamscher (editor)
, and Hugh Wallis.
(See http://www.xbrl.org/lrr/)
RFC2119
The Internet Engineering Task Force (IETF). "Key words for use in RFCs to Indicate Requirement Levels, March 1997"
Scott Bradner.

(See http://www.ietf.org/rfc/rfc2119.txt)
SCHEMA-1
World Wide Web Consortium (W3C). "XML Schema Part 1: Structures"
(See http://www.w3.org/TR/xmlschema-1/)
TRP
XBRL International Inc. (XII). "XBRL Taxonomy Recognition Process, 28 October 2004"
Peter Calvert
, and Joseph MacDonald.
(See http://www.xbrl.org/TaxonomyRecognition/)
XBRL
XBRL International Inc. (XII). "Extensible Business Reporting Language (XBRL) 2.1 Specification with corrected errata dated 2 July 2008"
Phillip Engel
, Walter Hamscher, Geoff Shuetrim, David vun Kannon, and Hugh Wallis.
(See http://www.xbrl.org/SpecRecommendations/)
XLINK
World Wide Web Consortium (W3C). "XML Linking Language (XLink) Version 1.0."
Steve DeRose
, Eve Maler, and David Orchard.
(See http://www.w3.org/TR/xlink/)

Appendix B Intellectual property status (non-normative)

This document and translations of it may be copied and furnished to others, and derivative works that comment on or otherwise explain it or assist in its implementation may be prepared, copied, published and distributed, in whole or in part, without restriction of any kind, provided that the above copyright notice and this paragraph are included on all such copies and derivative works. However, this document itself may not be modified in any way, such as by removing the copyright notice or references to XBRL International or XBRL organizations, except as required to translate it into languages other than English. Members of XBRL International agree to grant certain licenses under the XBRL International Intellectual Property Policy ( www.xbrl.org/legal ).

This document and the information contained herein is provided on an "AS IS" basis and XBRL INTERNATIONAL DISCLAIMS ALL WARRANTIES, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTY THAT THE USE OF THE INFORMATION HEREIN WILL NOT INFRINGE ANY RIGHTS OR ANY IMPLIED WARRANTIES OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.

The attention of users of this document is directed to the possibility that compliance with or adoption of XBRL International specifications may require use of an invention covered by patent rights. XBRL International shall not be responsible for identifying patents for which a license may be required by any XBRL International specification, or for conducting legal inquiries into the legal validity or scope of those patents that are brought to its attention. XBRL International specifications are prospective and advisory only. Prospective users are responsible for protecting themselves against liability for infringement of patents. XBRL International takes no position regarding the validity or scope of any intellectual property or other rights that might be claimed to pertain to the implementation or use of the technology described in this document or the extent to which any license under such rights might or might not be available; neither does it represent that it has made any effort to identify any such rights. Members of XBRL International agree to grant certain licenses under the XBRL International Intellectual Property Policy ( www.xbrl.org/legal ).

Appendix C Document history (non-normative)

DateAuthorDetails
16 July 2014Gianluca Garbellotto

New version to reflect 2014 version of XBRL GL framework.

25 March 2015Gianluca Garbellotto

Published as recommendation.

Appendix D Errata corrections in this document

This appendix contains a list of the errata that have been incorporated into this document. This represents all those errata corrections that have been approved by the XBRL International XBRL GL Working Group up to and including 25 March 2015 . Hyperlinks to relevant e-mail threads may be followed only by those who have access to the relevant mailing lists. Access to internal XBRL mailing lists is restricted to members of XBRL International Inc.

No errata have been incorporated into this document.