Extensible Business Reporting Language (XBRL) 2.1

RECOMMENDATION - 2003-12-31 + Corrected Errata - 2005-04-25

This version:

            XBRL-RECOMMENDATION-2003-12-31+Corrected-Errata-2005-04-25.htm

 

is a non-normative version of this specification. The NORMATIVE version is in the file

 

            http://www.xbrl.org/Specification/XBRL-RECOMMENDATION-2003-12-31+Corrected-Errata-2005-04-25.rtf

Editors

Name

Contact

Affiliation

Phillip Engel

phillipengel@kpmg.com

KPMG LLP

Walter Hamscher[1]

walter@hamscher.com

Standard Advantage

Geoffrey Shuetrim

gshuetrim@kpmg.com.au

KPMG LLP

David vun Kannon

dvunkannon@kpmg.com

KPMG LLP

Hugh Wallis

hugh@standarddimensions.com

Standard Dimensions (formerly of Hyperion Solutions Corporation)

Contributors

Name

Contact

Affiliation

Charles Hoffman

charleshoffman@olywa.net

UBmatrix

Campbell Pryde

cpryde@kpmg.com

KPMG LLP

Status of this document

This document is an update to the RECOMMENDATION document dated 2003-12-31 and incorporates all errata corrections that have been approved by the XBRL International Specification Working Group as of the date of publication. The International Steering Committee of XBRL International approved this document for publication as an update to the RECOMMENDATION on 2005-04-25.

Each erratum correction is listed in Appendix D but in this version there is no indication of the details of the corrections since the “track changes” mechanism used to identify those details has had “all changes accepted”. The details of the changes will be found by examining the version marked as “redlined”. Links to discussions surrounding these corrections are included but it should be noted that some of these are to “members only” mailing lists. Readers are invited to submit, with their comments, notification of any relevant patent rights of which they are aware and to provide supporting documentation.

While excerpts from XBRL schemas are given throughout this document the complete normative versions of the schemas are included in Appendix A. Non-normative versions are also available as separate .xsd files from www.xbrl.org, the XBRL International web site. The (non-normative) schema maintenance mechanism for schemas on the web is briefly described in Appendix A of this document.


Abstract

XBRL is the specification for the eXtensible Business Reporting Language. XBRL allows software vendors, programmers, intermediaries in the preparation and distribution process and end users who adopt it as a specification to enhance the creation, exchange, and comparison of business reporting information. Business reporting includes, but is not limited to, financial statements, financial information, non-financial information, general ledger transactions and regulatory filings, such as annual and quarterly reports.

This document defines XML elements and attributes that can be used to express information used in the creation, exchange, and comparison tasks of business reporting. XBRL consists of a core language of XML elements and attributes used in XBRL instances as well as a language used to define new elements and taxonomies of elements referred to in XBRL instances, and to express constraints among the contents of elements in those XBRL instances.


Table of contents

Editors. 1

Contributors. 1

Status of this document 1

Abstract 1

Table of contents. 3

List of tables. 6

List of examples. 6

1     Introduction. 8

1.1     Documentation conventions  8

1.2     Purpose  9

1.3     Relationship to other work  9

1.4     Terminology  10

1.5     Levels of conformance  13

1.6     Namespace prefix conventions  13

2     Changes from the previous published version. 14

2.1     Changes in XBRL instances  14

2.2     Changes in XBRL taxonomies  15

3     XBRL framework. 15

3.1     Overview of XBRL taxonomies  16

3.2     Overview of XBRL instances  16

3.3     Data integrity and confidentiality  18

3.4     Validation  18

3.5     XLink in XBRL  18

3.5.1     Simple links. 19

3.5.1.1   The xlink:type attribute on simple links. 20

3.5.1.2   The xlink:href attribute on simple links. 20

3.5.1.3   The xlink:role attribute on simple links (optional) 20

3.5.1.4   The xlink:arcrole attribute on simple links (optional) 20

3.5.1.5   The xml:base attribute on simple links (optional) 20

3.5.2     The linkbase element 20

3.5.2.1   The id attribute on linkbase elements (optional) 21

3.5.2.2   The xml:base attribute on linkbase elements (optional) 21

3.5.2.3   Documentation elements in linkbase elements (optional) 21

3.5.2.4   The roleRef element (optional) 22

3.5.2.5   The arcroleRef element (optional) 24

3.5.3     Extended links. 25

3.5.3.1   The id attribute on extended links (optional) 26

3.5.3.2   The xlink:type attribute on extended links. 26

3.5.3.3   The xlink:role attribute on extended links. 26

3.5.3.4   The xml:base attribute on extended links (optional) 27

3.5.3.5   Documentation elements in extended links (optional) 27

3.5.3.6   Titles in extended links (optional) 27

3.5.3.7   Locators. 27

3.5.3.8   Resources. 29

3.5.3.9   Arcs. 30

3.5.4     Use of XPointer in URI fragment identifiers. 39

4     XBRL instances. 39

4.1     The xbrl element 40

4.1.1     The id attribute on xbrl elements (optional) 41

4.1.2     The xml:base attribute on xbrl elements (optional) 41

4.2     The schemaRef element in XBRL Instances  41

4.2.1     The xlink:type attribute on schemaRef elements. 42

4.2.2     The xlink:href attribute on schemaRef elements. 42

4.2.3     The xlink:arcrole attribute on schemaRef elements (optional) 42

4.2.4     The xlink:role attribute on schemaRef elements (optional) 42

4.2.5     The xml:base attribute on schemaRef elements (optional) 42

4.3     The linkbaseRef element in XBRL instances  43

4.3.1     The xlink:type attribute on linkbaseRef elements. 43

4.3.2     The xlink:href attribute on linkbaseRef elements. 43

4.3.3     The xlink:arcrole attribute on linkbaseRef elements. 44

4.3.4     The xlink:role attribute on linkbaseRef elements (optional) 44

4.3.5     The xml:base attribute on linkbaseRef elements (optional) 44

4.4     The roleRef element in XBRL instances (optional) 44

4.5     The arcroleRef element in XBRL instances (optional) 44

4.6     Items  45

4.6.1     The contextRef attribute. 47

4.6.2     The unitRef attribute. 47

4.6.3     Usage of precision and decimals attributes. 48

4.6.4     The precision attribute (optional) 48

4.6.5     The decimals attribute (optional) 49

4.6.6     Inferring precision. 50

4.6.7     Definitions pertaining to accuracy. 51

4.6.7.1   “Correct to n Significant Figures”, “Rounding” and “Truncation”. 51

4.6.7.2   “Correct to n Decimal Places”. 52

4.7     The context element 52

4.7.1     The id attribute. 53

4.7.2     The period element 53

4.7.3     The entity element 55

4.7.3.1   identifier 55

4.7.3.2   The segment element (optional) 56

4.7.4     The scenario element (optional) 57

4.8     The unit element 59

4.8.1     The id attribute. 60

4.8.2     The measure element 60

4.8.3     The divide element 61

4.8.4     The unitNumerator and unitDenominator elements. 61

4.9     Tuples  62

4.10   Equality predicates relevant to detecting duplicate items and tuples  65

4.11   Footnotes  71

4.11.1   The footnoteLink element 71

4.11.1.1 Locators in footnoteLink elements. 74

4.11.1.2 The footnote element 74

4.11.1.3 The footnoteArc element 74

5     XBRL Taxonomies. 75

5.1     Taxonomy schemas  75

5.1.1     Concept definitions. 77

5.1.1.1   The periodType attribute. 77

5.1.1.2   The balance attribute (optional) 78

5.1.1.3   Item data types. 79

5.1.2     The linkbaseRef element 84

5.1.3     Defining custom role types – the roleType element 84

5.1.3.1   The roleURI attribute. 86

5.1.3.2   The id attribute on roleType elements (optional) 86

5.1.3.3   The definition element in roleType elements (optional) 86

5.1.3.4   The usedOn element in roleType elements. 87

5.1.4     Defining custom arc role types – the arcroleType element 87

5.1.4.1   The arcroleURI attribute. 89

5.1.4.2   The id attribute on arcroleType elements (optional) 89

5.1.4.3   The cyclesAllowed attribute. 89

5.1.4.4   The definition element on arcroleType elements (optional) 89

5.1.4.5   The usedOn element on arcroleType elements. 89

5.1.5     Prohibit <redefine>. 89

5.2     Taxonomy linkbases  89

5.2.1     The linkbase element 94

5.2.2     The labelLink element 94

5.2.2.1   Locators in labelLink elements. 95

5.2.2.2   The label element 95

5.2.2.3   The labelArc element 98

5.2.3     The referenceLink element 99

5.2.3.1   Locators in referenceLink elements. 100

5.2.3.2   The reference element 100

5.2.3.3   The referenceArc element 104

5.2.4     The presentationLink element 104

5.2.4.1   Locators in presentationLink elements. 105

5.2.4.2   The presentationArc element 105

5.2.5     The calculationLink element 107

5.2.5.1   Locators in calculationLink elements. 107

5.2.5.2   The calculationArc element 107

5.2.6     The definitionLink element 111

5.2.6.1   Locators in definitionLink elements. 112

5.2.6.2   The definitionArc element 112

6     References. 116

A.    Schemas. 118

xbrl-instance-2003-12-31.xsd (normative) 118

xbrl-linkbase-2003-12-31.xsd (normative) 130

xlink-2003-12-31.xsd (normative) 138

xl-2003-12-31.xsd (normative) 140

B.    Document history and acknowledgments (non-normative). 145

C.    Intellectual property status (non‑normative). 156

D.   Errata Corrections incorporated in this document 156

 


List of tables

 

Table 1. Terms and definitions. 10

Table 2. Roles in the linkbaseRef element 44

Table 3. Unit restrictions based on item types. 60

Table 4. Equality predicate definitions. 65

Table 5. Correct signage in an XBRL instance. 79

Table 6. Constraints among the balance attribute and calculation arc weights. 79

Table 7. Defined item types. 80

Table 8. Standard label role attribute values. 96

Table 9. Reference role attribute values. 103

 

List of examples

 

Example 1. A skeletal linkbase. 21

Example 2. One-to-One arc relationships [XLINK] 32

Example 3. One-to-Many arc relationships [XLINK] 32

Example 4. Many-to-Many arc relationships [XLINK] 33

Example 5. Correct use of arcs according to [XLINK] 34

Example 6. Prohibiting and overriding relationships. 37

Example 7. Example xlink:href values. 39

Example 8. Use of xbrl as the root element 41

Example 9. A numeric fact with three significant digits. 47

Example 10. A non-numeric item.. 47

Example 11. Precision and lexical representation. 48

Example 12. Decimals and lexical representation. 49

Example 13. Lexical representation,  precision and decimals. 51

Example 14. Rounding. 51

Example 15. Correct to n decimal places. 52

Example 16. IDs. 53

Example 17. Entity identifiers. 55

Example 18. Using the segment element 56

Example 19. Use of the scenario element 58

Example 20. Use of the unit element 61

Example 21. Simple and complex unit of measure comparison. 62

Example 22. Defining a tuple as a member of the substitutionGroup "tuple". 64

Example 23. Elements describing business properties held and disposed. 64

Example 24. Hierarchy in a tuple. 65

Example 25. Duplicate items, tuples and contexts. 69

Example 26. Predicates for detecting duplicates. 70

Example 27. A footnote in an XBRL instance. 73

Example 28. A skeletal taxonomy schema showing linkbase references. 76

Example 29. Typical element definitions in a taxonomy schema. 77

Example 30. Instant and duration concept definitions. 78

Example 31. Using the balance element to indicate normal debit and credit balances. 79

Example 32. A concept appearing with positive and negative values in an XBRL instance. 79

Example 33. Deriving an enumerated item type. 81

Example 34. Representing fractions. 84

Example 35. Defining a custom role type. 85

Example 36. Defining a custom arc role value. 87

Example 37. Using relationship prohibition to insert a new sub-total into a calculation network  91

Example 38. Types of cycles. 92

Example 39. Elements of a financial reporting taxonomy. 92

Example 40. Hierarchy in a calculation linkbase. 93

Example 41. Hierarchy of general-special arcs in a definition linkbase. 93

Example 42. Hierarchy in a presentation linkbase. 94

Example 43. Label resource examples. 96

Example 44. Arc between a concept and one of its labels. 98

Example 45. Sample values of xlink:role for several referenceLink elements. 100

Example 46. Arc between a concept and supporting references. 102

Example 47. Reference resource. 102

Example 48. A presentation arc. 106

Example 49. An abstract concept definition. 106

Example 50. Calculations involving decimals and precision. 109

Example 51. Syntax of a calculationArc. 109

Example 52. Cash, equivalent to cash as totalled by branch location and account type. 110

Example 53. XBRL instance fragment with nested tuples. 111

Example 54. A general-special arc. 113

Example 55. Inference of values for non-numeric items with concepts connected by essence-alias arcs  114

Example 56. Inference of values for numeric items with concepts connected by essence-alias arcs  115


 

1         Introduction

XBRL is the specification for the eXtensible Business Reporting Language. XBRL allows software vendors, programmers and end users to enhance the creation, exchange, and comparison of business reporting information. Business reporting includes, but is not limited to, financial statements, financial information, non-financial information and regulatory filings such as annual and quarterly financial statements.

This document defines XML elements and attributes that can be used to express information used in the creation, exchange and comparison tasks of business reporting. XBRL consists of a core language of XML elements and attributes used in document instances. Abstract elements in this core language are replaced by concrete elements in XBRL instances. These abstract elements are defined in taxonomies. XBRL consists of a language used to define new elements and taxonomies of elements referred to in document instances and the relationships between taxonomy elements.

All parts of this document not explicitly identified as non-normative are normative. In the event of any conflict or apparent conflict between the English language text of this document and/or schema fragments included in the main body of this document and the normative schemas contained herein (Appendix A), the more restrictive interpretation that is possible from the information provided by the English language text and that provided by the normative schemas (Appendix A) SHALL prevail. The schema fragments incorporated into the body of the text are non-normative and are generally indicated as such by means of shading such as that defined in section 1.1. It is important to note that the normative schemas (Appendix A) do not necessarily always provide the most restrictive interpretation, either because it is not possible to express certain limitations using the syntax of XML Schema [SCHEMA‑1] [SCHEMA-2] or because, as at the time of publication of this specification, some commonly available commercial implementations of XML Schema do not implement otherwise necessary features correctly or fully. For example, the schema specification of the abstract element tuple (Appendix A) does not restrict its content model as much as the English language text in section 4.9. The text of section 4.9 SHALL prevail in this case. Another, converse, example is the order of the sub-elements of the context element. In this case the schema (Appendix A) dictates a specific ordering of these sub-elements yet this is not explicitly articulated in the text of section 4.7. The schema (Appendix A) provides the more restrictive interpretation and thus it SHALL prevail over any alternative possible interpretation of the English language text in this case.

The schemas and other documents published separately and contemporaneously with the specification are non-normative and are provided for the convenience of users of this specification.

1.1        Documentation conventions

The following highlighting is used to present non-normative technical material in this document:

 

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

 

Non-normative editorial comments are denoted by indentation and the prefix “NOTE:”:

NOTE: This is a non-normative editorial comment.

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

1.2        Purpose

The XBRL specification is intended to benefit four categories of users: 1) business information preparers, 2) intermediaries in the preparation and distribution process, 3) users of this information and 4) the vendors who supply software and services to one or more of these three types of user. The overall intention is to balance the needs of these groups creating a standard that benefits to all four groups.

The needs of end users of business information have generally taken precedence over other needs when it has been necessary to make specification design decisions that might benefit one community at the expense of another.

A major goal of XBRL is to improve the business report product. It facilitates current practice; it does not change or set new accounting or other business domain standards. However, XBRL should facilitate changes in reporting over the long term.

XBRL provides users with a standard format in which to prepare reports that can subsequently be presented in a variety of ways. XBRL provides users with a standard format in which information can be exchanged between different software applications. XBRL permits the automated, efficient and reliable extraction of information by software applications. XBRL facilitates the automated comparison of financial and other business information, accounting policies, notes to financial statements between companies, and other items about which users may wish make comparisons that today are performed manually.

XBRL facilitates "drill down" to detailed information, authoritative literature, audit and accounting working papers. XBRL includes specifications for as much information about the reporting entity as may be relevant and useful to the process of financial and business reporting and the interpretation of the information.

XBRL supports international accounting and other standards as well as languages other than the various dialects of English.

XBRL is extensible by any adopter to increase its breadth of applicability, and its design encourages reuse via incremental extensions. For example, XBRL specifies the format of information that would reasonably be expected in an electronic format for securities filings by public entities. XBRL facilitates business reporting in general, and is not limited to financial and accounting reporting.

XBRL focuses on the genuine information needs of the user and adheres to the spirit of reporting standards that avoid the use of bold, italics, and other stylistic techniques that may distract from a true and fair presentation of results. Therefore, there is no functional requirement that XBRL documents support any particular text formatting conventions.

The purpose of XBRL instances is the transmission of a set of facts. There is no constraint on how much or how little they contain. A single fact can form the entire content of a valid XBRL instance, for example, when the information being conveyed is limited to what “Cost of Goods Sold” was last quarter or an XBRL instance can be a database dump, containing huge numbers of facts. It can also be anything in between. This provides a great deal of flexibility and is meant specifically to achieve the goals of allowing XBRL to be reused within other specifications and for application software needing to extract data from otherwise arbitrarily formatted documents. It is expected that, for most uses of XBRL, many XML XBRL instances will be created that consist almost exclusively of facts.

1.3        Relationship to other work

XBRL uses several World Wide Web Consortium (W3C) recommendations, XML 1.0 [XML], Namespaces in XML [NAMESPACES], and refers directly to XML Linking[XLINK] and others listed in Section 6 References. It also relies extensively on the XML Schema [SCHEMA‑1] and [SCHEMA-2] recommendation.

Discussions have taken place with other bodies issuing XML specifications in the financial arena, including OAG (Open Applications Group), OMG (Object Management Group), FpML (Financial Products Markup Language), finXML (Financial XML), OFX/IFX (Open Financial Exchange) and ebXML (e-Business XML). The scope of XBRL does not include transaction protocols. It includes financial reporting and contemplates extensive detail in the representation and use of accounting conventions, which distinguishes it from these other efforts.

1.4        Terminology

The terminology used in XBRL frequently overlaps with terminology from other fields, and the following list is provided to reduce the possibility of ambiguity and confusion (see also the references in section 6 below).

Table 1. Terms and definitions.

Term

Definition

abstract element

An element for which the attribute abstract in its XML schema declaration has the value "true" and which, therefore, cannot be used in an XML instance.

alias concept

The concept at the “to” end of a definition arc with arc role http://www.xbrl.org/2003/arcrole/essence‑alias. Alias and essence concepts are definitionally equivalent in the sense that valid values for an alias concept are always valid values for essence concepts to which they are related by an essence-alias relationship.

alias item

An item in an instance whose element is an alias concept.

arc

Arcs relate concepts to each other by associating their locators. Arcs also associate concepts with resources by connecting the concept locators to the resources themselves. Arcs are also used to connect fact locators to footnote resources in footnote extended links.

Arcs have a set of attributes that document the nature of the relationships expressed in extended links. Importantly all arcs have an xlink:arcrole attribute that determines the semantics of the relationship they describe.

c-equal

Context-equal: Items or sets or sequences of items having the same item type in s-equal contexts. For a formal definition, see Section 4.10 below.

ancestor, child, descendant, grandparent, parent, sibling, uncle

Relationships among elements in an XBRL instance: using the terminology of [XPATH], for any element E, another element F is its:

 

·          ancestor if and only if F appears on the ancestor axis of E

·          child if and only if F appears on the child axis of E

·          descendant if and only if F appears on the descendant axis of E

·          grandparent if and only if F is the parent of the parent of E

·          parent if and only if F appears on the parent axis of E

·          sibling if and only if F appears on the child axis of the parent of E and is not E itself

·          uncle if and only if F is a sibling of the parent of E

 

concept

Concepts are defined in two equivalent ways. In a syntactic sense, a concept is an XML Schema element definition, defining the element to be in the item element substitution group or in the tuple element substitution group. At a semantic level, a concept is a definition of kind of fact that can be reported about the activities or nature of a business activity.

concrete element

An element for which the attribute abstract in its XML schema declaration has the value "false" and which, therefore, may appear in an XML instance.

context

Contexts are elements that occur as children of the root element in XBRL instances. They document the entity, the period and the scenario that collectively give the appropriate context for understanding the values of items.

Discoverable Taxonomy Set (DTS)

A DTS is a collection of taxonomy schemas and linkbases. The bounds of a DTS are such that the DTS includes all taxonomy schemas and linkbases that can be discovered by following links or references in the taxonomy schemas and linkbases included in the DTS. At least one taxonomy schema in a DTS must import the xbrl-instance-2003-12-31.xsd schema. See Section 3 for details on the discovery process.

duplicate items

Two items of the same concept in the same context under the same parent. For a formal definition see duplicate item in section 4.10.

duplicate tuples

Two occurrences of a tuple with all their descendants having the same content; more precisely: tuples that are p-equal, all of whose tuple children have a duplicate (except for being p-equal) in the other tuple, and all of whose item children have a duplicate (except for being p-equal) in the other tuple. For a formal definition see duplicate tuple in section 4.10.

element

An XML element defined using XML Schema.

entity

A business entity, the subject of XBRL items. Where the [XML]/[SGML] concept of syntactic "entity" is meant, this will be pointed out.

essence concept

The concept at the “from” end of a definition arc with arc role http://www.xbrl.org/2003/arcrole/essence‑alias. Alias and essence concepts are definitionally equivalent in the sense that valid values for an alias concept are always valid values for essence concepts to which they are related by an essence-alias relationship.

essence item

An item in an instance whose element is an essence concept.

extended link

An extended link is an element identified as an extended link using the syntax defined in the XML Linking Language [XLINK]. Extended links represent a set of relationships between information that they contain and information contained in third party documents. See Section 3.5.2.4 for more details.

 

fact

Facts can be simple, in which case their values must be expressed as simple content (except in the case of simple facts whose values are expressed as a ratio), and facts can be compound, in which case their value is made up from other simple and/or compound facts. Simple facts are expressed using items (and are referred to as items in this specification) and compound facts are expressed using tuples (and are referred to as tuples in this specification).

instance namespace

The namespace used for XBRL 2.1 instances, http://www.xbrl.org/2003/instance

item

An item is an element in the substitution group for the XBRL item element. It contains the value of the simple fact and a reference to the context (and unit for numeric items) needed to correctly interpret that fact. When items occur as children of a tuple, they must also be interpreted in light of the other items and tuples that are children of the same tuple. There are numeric items and non-numeric items, with numeric items being required to document their measurement accuracy and units of measurement.

least common ancestor

In an instance, the element that is an ancestor of two elements and has no child that also appears on the ancestor axis [XPATH] of those same two elements.

linkbase

A linkbase is a collection of XML Linking Language [XLINK] extended links that document the semantics of concepts in a taxonomy.

linkbase namespace

The namespace of XBRL 2.1 linkbases, http://www.xbrl.org/2003/linkbase

locator

Locators supply an XPointer [XPTR] reference to the taxonomy schema element definitions that uniquely identify each concept. They provide an anchor for extended link arcs. See Section 3.5.3.7 for more details.

must, must not, required, shall, shall not, should, should not, may, optional

See [RFC2119] for definitions of these and other terms as used in this specification. These include:

 

 

 

 

 

 

MUST

REQUIRED

SHALL

The definition is an absolute requirement of the specification.

MUST NOT

SHALL NOT

The definition is an absolute prohibition of the specification.

SHOULD

RECOMMENDED

There may be valid reasons in particular circumstances to ignore a particular feature, but the full implications must be understood and carefully weighed before choosing a different course.

SHOULD NOT

NOT RECOMMENDED

There may exist valid reasons in particular circumstances when the particular behaviour is acceptable or even useful, but the full implications should be understood and the case carefully weighed before implementing an behaviour described with this label.

MAY

OPTIONAL

A feature is truly optional. One vendor may choose to include the feature because a particular marketplace requires it or because the vendor feels that it enhances the product while another vendor may omit the same feature. An implementation which does not include a particular option MUST be prepared to interoperate with another implementation which does include the option, though perhaps with reduced functionality. In the same vein and implementation which does include a particular option MUST be prepared to interoperate with another implementation which does not include the option (except, of course, for the feature the option provides.)

non-numeric item

An item that is not a numeric item as defined below. Dates, in particular, are not numeric.

numeric item

An item whose simple content is derived by restriction from the XML Schema primitive types decimal, float or double, or complex content derived by restriction from the XBRL defined type fractionItemType (See Section 5.1.1.3 for details on item types).

period

An instant or duration of time. In business reporting, financial numbers and other facts are reported “as of” an instant or for a period of certain duration. Facts about instants and durations are both common.

p-equal

Parent-equal: instance items or tuples having the same parent. For a formal definition, see Section 4.10 below.

resource

Resources are XML fragments, contained within extended links that provide additional information about concepts or items. See Section 3.5.3.8 for details.

root of an XBRL instance

The root of an XBRL instance is the xbrl element. In principle, it is possible to embed an XBRL instance in any XML document. In this case, the xbrl element is the container for the XBRL instance.

s-equal

Structure-equal: XML nodes that are either equal in the XML value space, or whose XBRL-relevant sub-elements and attributes are s-equal. For a formal definition, see Section 4.10 below.

taxonomy

A taxonomy is an XML schema and the set of XBRL linkbases that it references using linkbaseRef elements and the linkbases that are nested within it.

taxonomy schema

A taxonomy schema is an XML Schema [SCHEMA‑1]. A large part of many taxonomy schemas is given over to the definition of the syntax for the concepts in that taxonomy. Sections 3.1, 5 and 5.1 address this in more detail.

tuple

A tuple is an element in the substitution group for the XBRL tuple element. Tuples are used to bind together the parts of a compound fact. Those constituent parts are themselves, facts but they must be interpreted in light of each-other. For example, the name, age and compensation of a director of a company need to be grouped together to be correctly understood.

unit

Units are XML fragments that occur as children of the root element in XBRL instances. They document the unit of measure for numeric items. Each unit element is only capable of documenting a single unit of measurement.

u-equal

Unit-equal. u-equal numeric items having the same units of measurement. For a formal definition, see Section 4.10 below.

v-equal

Value-equal: c-equal items having either the same non-numeric value, or numeric values that are equal within some tolerance defined by the lesser of their respective precision, implied precision or decimals attributes. For a formal definition see Section 4.10 below.

XBRL instance

XBRL instances are XML fragments with root element, xbrl. XBRL instances contain business report facts, with each fact corresponding to a concept defined in their supporting DTS. XBRL instances also contain contexts and units that provide additional information needed to interpret the facts in the instance.

x-equal

[XPATH]-equal: The XPath "=" operator returns the value true. For a formal definition, see Section 4.10 below.

1.5        Levels of conformance

This specification describes two levels of conformance for XBRL aware processors. The first is required of all XBRL processors. Support for the other level of conformance will depend on the purpose of the processor.

Minimally conforming XBRL processors MUST completely and correctly implement all of the syntactic restrictions embodied in this specification.

Fully conforming XBRL processors MUST be minimally conforming and, in addition, they MUST completely and correctly implement all of the semantic restrictions relating to linkbases and XBRL instances.

All restrictions embodied in this specification apply to minimally conforming processors unless otherwise stated.

1.6        Namespace prefix conventions

This specification uses a number of namespace prefixes when describing elements and attributes. The namespace prefix convention used is as follows:

 

link    http://www.xbrl.org/2003/linkbase

xbrli   http://www.xbrl.org/2003/instance

xl      http://www.xbrl.org/2003/XLink

xlink   http://www.w3.org/1999/xlink

xml     http://www.w3.org/XML/1998/namespace

xsi     http://www.w3.org/2001/XMLSchema-instance

 

Note that the xml prefix is reserved as defined in [NAMESPACES]; specifically at http://www.w3.org/TR/REC-xml-names/#nsc-NSDeclared.

Some elements and attributes defined in this specification are described without use of a namespace prefix or namespace. The normative namespaces for all elements and attributes defined in this spec are determined by the normative schemas contained herein (Appendix A).

 

2         Changes from the previous published version

Changes from the previous, December 2001 version of [XBRL] (and the interim 2.0a “patch” release in November 2002) were driven by two factors. Several implementations of XML Schema required the removal of an ambiguous content model from the definition of contexts. This was done without changing the language recognised by the schema. Further implementation experience within the XBRL community, including the publication of the XBRL General Ledger taxonomy, motivated many other changes. A number of business requirements documented by the XBRL International Domain working group have been incorporated.

2.1        Changes in XBRL instances

The group element has been eliminated. It has been replaced with the xbrl element, which acts as the root element of an XBRL instance.

The set of taxonomy schemas and linkbases supporting an XBRL instance has been formally defined (as a Discoverable Taxonomy Set (DTS)). XBRL instances now identify their supporting DTS using a new schemaRef element, which points to supporting taxonomy schemas and using the existing linkbaseRef element, which points to supporting linkbases. The XML Schema Instance schemaLocation attribute is no longer required in the DTS discovery process.

The schemaRef elements must now appear first in an XBRL instance. The linkbaseRef elements must appear after the schemaRef elements and before all other elements in an XBRL instance.

Guidance has been included on the entry of numerical quantities in XBRL instances for the common case of elements from accounting related taxonomies (elements using the optional “balance” attribute in their definition). The duration element has been eliminated from context periods so durations now have to be represented using startDate and endDate. There is also additional guidance on entering data to define a period of time.

The content of the unit element has been simplified to facilitate more straightforward detection of equivalent units of measurement.

The precision attribute on numericContext has been eliminated in favour of more detailed documentation at the level of the numeric items. The CWA attribute on the numericContext element has been eliminated. The unit element has been separated from the numericContext element to enable numeric and non-numeric items to use the same context structures. The numericContext element and the nonNumericContext element have been replaced with a context element that documents only entity, period and scenario.

An additional mechanism has been introduced to enable XBRL instance preparers to make statements about the numerical accuracy of the facts reported. Specifically, a new decimals attribute has been allowed on items of numeric type to provide an alternative way to document accuracy in terms of the number of decimal places to which a numerical fact is accurate. Rules for handling precision and decimals attributes have been provided.

To specify that numbers are stated exactly in an XBRL instance, two new types have been defined for use by the decimals and precision attributes. These types enable XBRL instances to specify that numbers are represented to an infinite number of significant figures or number of decimal places.

The definition of a duplicate item has been changed to include reference to the content of any tuple structures that contain the items being compared.

2.2        Changes in XBRL taxonomies

Some of the arc role values and role values previously suggested are now normative and additional arc role values and role values have been defined. Some of the previously suggested arc role values have been removed. A new mechanism to define custom arc role values and role values has been added. The essence-alias arc in definition extended links has superseded the element-dimension relationship in calculation extended links. The parent-child arc no longer exists in the calculation extended link and has been replaced by summation-item arc. The parent-child arc no longer exists in the definition extended link and has been replaced by the general-special arc and by the XML Schema approach to content modelling for tuples. Because the parent-child arc in definition extended links has two possible replacements, this is one area where complete backward compatibility with 2.0 has not been achieved. Some manual intervention may be required when converting these relationships expressed in 2.0 taxonomies to 2.1. Some networks of relationships are no longer allowed to contain directed or undirected cycles.

Tuples may now have a complex content model, but MUST only use a restricted set of XML Schema constructs to describe this content model. Tuple content model definitions MUST NOT permit descendant elements for the tuple that are not in the item substitution group or in the tuple substitution group. This implies that the declarations of the descendant elements for tuples MUST be references to globally declared elements [SCHEMA‑1].

Calculations have been constrained to apply only within the scope of a tuple for items within a tuple.

The number of available item types has been expanded to include all of the appropriate built-in data types of XML Schema [SCHEMA-2].

A new type for items has been defined to allow the specification of facts that are reported as fractions (such as 22.5/77.5). The fraction type is not among the built-in data types of XML Schema [SCHEMA-2]. Since fractions have two parts, denominator and numerator, it has complex content.

Derivation of new item and tuple types from those defined by XBRL itself has been limited so that item types MUST be defined by restriction from the set of item types provided by XBRL. This set contains item types that are derived by extension from all the appropriate built-in simple types of XML Schema and a special purpose type with complex content, the fractionItemType.

The suggested xlink:role attribute on extended link locators, that indicated the root element of a relationship hierarchy, has been eliminated.

Clarity has been provided around the possibility for linkbases to be contained in taxonomy schemas.

A mandatory periodType attribute has been added to concept definitions to constrain the type of period that can be attached to items based on concepts.

3         XBRL framework

XBRL defines a syntax in which a fact can be reported as the value of a well defined reporting concept within a particular context. The syntax enables software to efficiently and reliably find, extract and interpret those facts. The XBRL framework splits business reporting information into two components: XBRL instances and taxonomies.

XBRL instances contain the facts being reported while the taxonomies define the concepts being communicated by the facts. The combination of an XBRL instance and its supporting taxonomies, and additional linkbases constitute an XBRL business report.

3.1        Overview of XBRL taxonomies

A taxonomy is comprised of an XML Schema [SCHEMA‑1] and all of the linkbases contained in that schema or directly referenced by that schema. The XML schema is known as a taxonomy schema.

In XBRL terminology, a concept is a definition of a reporting term. Concepts manifest as XML Schema [SCHEMA‑1] element definitions. In the taxonomy schema a concept is given a concrete name and a type. The type defines the kind of data types allowed for facts measured according to the concept definition. For example, a “cash” concept would typically have a monetary type. This declares that when cash is reported, its value will be monetary. In contrast, a “accountingPoliciesNote” concept would typically have a string type so that, when the “accountingPoliciesNote” is reported in an XBRL instance, its value would be interpreted as a string of characters. Additional constraints on how concepts can be used are documented by additional XBRL attributes on the XML Schema [SCHEMA‑1] element definitions that correspond to the concepts. See Section 5.1.1 for details.

The linkbases in a taxonomy further document the meaning of the concepts by expressing relationships between concepts (inter-concept relationships) and by relating concepts to their documentation. See Section 5.2 for details.

A linkbase is a collection of extended links. There are five different kinds of extended links used in taxonomies to document concepts: definition, calculation, presentation, label and reference. The first three types of extended link express inter-concept relationships, and the last two express relationships between concept and their documentation.

The linkbases MAY be contained in a separate document from the taxonomy schema, and they MAY be embedded in the taxonomy schema. When a linkbase is not embedded in a taxonomy schema, the taxonomy schema MUST contain a linkbaseRef to point to the linkbase document if the linkbase is to be part of the taxonomy built around the taxonomy schema.

3.2        Overview of XBRL instances

While a taxonomy defines reporting concepts, it does not contain the actual values of facts based on the defined concepts. The fact values are contained in XBRL instances and are referred to as “facts”. Besides the actual value of a fact, such as “cash is 500,000”, the XBRL instance provides contextual information necessary for interpreting the fact values. For numeric facts, the XBRL instance also documents measurement accuracy and measurement units.

An XBRL instance can be supported by more than one taxonomy. Also, taxonomies can be interconnected, extending and modifying each other in various ways. Generally, it is necessary to consider multiple related taxonomies together when interpreting an XBRL instance. The set of related taxonomies is called a Discoverable Taxonomy Set (DTS). A DTS is a collection of taxonomy schemas and linkbases. The bounds of a DTS are determined by starting from some set of documents (instance, taxonomy schema, or linkbase) and following DTS discovery rules. Although an XBRL instance can be the starting point for DTS discovery, the XBRL instance itself is not part of the DTS. Taxonomy schemas and linkbases that are used as starting points for DTS discovery are part of the DTS that they discover.

DTS rules of discovery:

Taxonomy schemas in the DTS are those:

1.      referenced directly from an XBRL instance using the schemaRef, roleRef or arcroleRef element. The xlink:href attribute on the schemaRef, roleRef or arcroleRef element contains the URL of the taxonomy schema that is discovered. Every taxonomy schema that is referenced by the schemaRef, roleRef or arcroleRef element MUST be discovered.

2.      referenced from a discovered taxonomy schema via an XML Schema import or include element. Every taxonomy schema that is referenced by an import or include element in a discovered taxonomy schema MUST be discovered.

NOTE: since <redefine> is prohibited in taxonomy schemas it cannot play a role in DTS discovery.

3.      referenced from a discovered linkbase document via a loc element. Every taxonomy schema that is referenced by an xlink:href attribute on a loc element in a discovered linkbase MUST be discovered.

4.      referenced from a discovered linkbase document via a roleRef element. Every taxonomy schema that is referenced by an xlink:href attribute on a roleRef element in a discovered linkbase MUST be discovered.

5.      referenced from a discovered linkbase document via an arcroleRef element. Every taxonomy schema that is referenced by an xlink:href attribute on an arcroleRef element in a discovered linkbase MUST be discovered.

Linkbase documents in the DTS are those:

1.      referenced directly from an XBRL instance via the linkbaseRef element. The xlink:href attribute contains the URL of the linkbase document being discovered. Every linkbase that is referenced by the linkbaseRef element MUST be discovered.

2.      referenced from a discovered taxonomy schema via the linkbaseRef element. The xlink:href attribute contains the URL of the linkbase being discovered. Every linkbase that is referenced by the linkbaseRef element MUST be discovered.

3.      that occur at the XPath "schema/annotation/appinfo/*" in a discovered taxonomy schema (Throughout this specification, schema, annotation and appinfo are all elements defined in the XML Schema namespace).

4.      referenced from a discovered linkbase document via a loc element. Every linkbase that contains a resource that is referenced by an xlink:href attribute on a loc element in a discovered linkbase MUST be discovered.

For example, the “Financial Reporting for Commercial and Industrial Companies, US GAAP DTS” consists of well-defined concepts within the US Generally Accepted Accounting Principles (GAAP) when those principles are applied to Commercial and Industrial (C&I) companies. This DTS contains an “expense” concept.

A hospital XBRL instance may use these concepts from the US GAAP C&I DTS as well as an additional concept “physician salaries” that is defined in a separate taxonomy. This taxonomy would include linkbases that relate the “physician salaries” concept to the “expense” concept in the US GAAP C&I DTS. The hospital XBRL instance would have a schemaRef element pointing to the hospital taxonomy. This XBRL instance would be the starting place for determining the DTS that supports the XBRL instance. The discovery starts by following the schemaRef element to the hospital taxonomy. In the hospital taxonomy there would be a linkbaseRef element pointing to its linkbases. One of the linkbases contains a loc element pointing to the “expense” concept in one the US GAAP C&I taxonomies. The taxonomy that contains the “expense” concept would point to the other taxonomies in the US GAAP C&I DTS. Following this discovery process, all necessary taxonomies would be discovered and the result would be a DTS that includes the US GAAP C&I DTS and the hospital specific taxonomy.

As this example shows, DTSs can also be used as “building blocks” to create larger, more sophisticated DTSs. Users MAY compose groups of existing DTSs into higher-level DTSs and MAY selectively add concepts and concept relationships via extension taxonomies.

While some consuming applications might be able to perform processing on an XBRL data file without referring to a DTS, normally, the interpretation and processing of any given XBRL fact is relative to the contents of a DTS.

For example, given an XBRL instance, to correctly produce a list of facts with the entries in the list corresponding to an ordered set of concepts, it is necessary to find the label corresponding to each fact being listed. The labels are contained in label extended links. The locations of the label extended links may be specified by linkbaseRef elements in the taxonomy schemas that have been identified as supporting the facts being presented. The label extended link locations may also be specified by linkbaseRef elements in the XBRL instance itself.

When processing an XBRL instance, consuming applications MUST use all of the linkbases referenced directly or indirectly in this way, if they are relevant to the processing activities. All references to taxonomy schemas and linkbases MUST be resolved when determining the DTS supporting an XBRL instance.

3.3        Data integrity and confidentiality

There are many applications that require business information to be transmitted securely, with a particular emphasis on data integrity (leading to the use of hash totals, etc.) and with confidentiality (leading to the use of cryptographic means of protection). XBRL deliberately provides neither of these mechanisms, since its focus is on transmission of actual content in an agreed-upon format. it is assumed that, like any other block of data, data integrity can be enhanced by adding redundant error correction bytes, by cryptographic hashing and signing with a private key, etc. These mechanisms are all outside the scope of XBRL.

An XBRL instance does not have to be aware of whether all or some of it has been manipulated to be signed, encrypted, canonicalised, compressed, etc. By the time XBRL processing has to take place, all of those manipulations will have been unwound, and the XBRL payload will be free of any evidence of those operations.

3.4        Validation

XBRL instances, XBRL linkbases and XBRL taxonomy schemas MUST comply with the syntax requirements imposed in this specification. Many of these syntax requirements are expressed using XML Schemas so a part of the validation process can be performed using XML Schema validation software. Some of these syntax requirements are not or cannot be expressed using XML Schemas and so, MUST be handled using other validation technologies.

Consuming applications MAY also check that the data in an XBRL instance is consistent with the semantics expressed in the DTS supporting the instance. Semantic inconsistencies do not invalidate the XBRL instances in which they occur. However, this specification identifies the semantic inconsistencies that can be tested for by fully conformant XBRL processors.

3.5        XLink in XBRL

Links between XML fragments occur in many forms in XBRL. There are links between XBRL instances and their supporting DTS. There are links between XBRL instance facts and the footnotes that describe relationships between those facts. There are links between concept syntax definitions and their semantics, defined in linkbases. The semantics themselves are expressed in the networks of links that constitute the linkbases. XBRL expresses all of these links using the syntax defined in the XLink specification [XLINK]. XBRL uses both the simple links and the extended links defined in the [XLINK] specification.

The [XLINK] specification establishes the syntax and semantics for a set of attributes in the [XLINK] namespace, http://www.w3.org/1999/xlink. These attributes can then be used on elements defined in another namespace to document various kinds of links between XML fragments. Many of these attributes are used extensively in XBRL. Others have no semantics that are relevant to the links defined by XBRL. These other attributes are permitted by the XML Schema syntax constraints but they are not documented or given any specific semantics in this specification. Examples include the xlink:show and the xlink:actuate attributes.

This section documents the generic forms of the simple links and the extended links used in XBRL. Specific elements that use the simple link or extended link syntax are documented in detail in the relevant sections of this specification dealing with the syntax of XBRL instances or the syntax of XBRL taxonomies.

The syntax of the generic [XLINK] structures used by XBRL is constrained by two XML Schemas: the xlink-2003-12-31.xsd (normative) that defines the syntax for the [XLINK] attributes; and the xl-2003-12-31.xsd (normative) that defines the content models for the various kinds of link-related elements defined by this specification.

3.5.1       Simple links

A simple link is a link that points from one resource to another [XLINK] http://www.w3.org/TR/xlink/#simple-links. Some examples of how XBRL uses simple links are:

·          to point to linkbases from XBRL instances and from taxonomy schemas (See Section 4.2.5)

·          to point to taxonomy schemas from XBRL instances (See Section 4.2).

The XML Schema constraints on the simple links used by XBRL are shown below.

<schema targetNamespace="http://www.xbrl.org/2003/XLink"

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

  xmlns:xl="http://www.xbrl.org/2003/XLink"

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

  elementFormDefault="qualified"

  attributeFormDefault="unqualified">

 

  <complexType name="simpleType">

    <annotation>

      <documentation>

      Type for the simple links defined in XBRL

      </documentation>

    </annotation>

    <complexContent>

      <restriction base="anyType">

        <attributeGroup ref="xlink:simpleType"/>

        <attribute ref="xlink:href" use="required" />

        <attribute ref="xlink:arcrole" use="optional" />

        <attribute ref="xlink:role" use="optional" />

        <attribute ref="xlink:title" use="optional" />

        <attribute ref="xlink:show" use="optional" />

        <attribute ref="xlink:actuate" use="optional" />

        <anyAttribute namespace="http://www.w3.org/XML/1998/namespace"

          processContents="lax" />

      </restriction>

    </complexContent>

  </complexType>

  <element name="simple" type="xl:simpleType" abstract="true">

    <annotation>

      <documentation>

      The abstract element at the head of the simple link substitution group.

      </documentation>

    </annotation>

  </element>

 

</schema>

3.5.1.1     The xlink:type attribute on simple links

The xlink:type attribute MUST occur and MUST have the fixed content “simple”.

3.5.1.2     The xlink:href attribute on simple links

A simple link MUST have an xlink:href attribute. The xlink:href attribute MUST be a URI. The URI MUST point to an XML document or to an XML fragment within an XML document. If the URI is relative, it MUST be resolved to obtain an absolute URI as specified in XML Base specification [XML Base]. For details on the allowable forms of XPointer [XPTR] syntax in the URI see section 3.5.4

3.5.1.3     The xlink:role attribute on simple links (optional)

The optional xlink:role attribute MUST take URI values. If it is provided, the xlink:role attribute MUST NOT be empty.

3.5.1.4     The xlink:arcrole attribute on simple links (optional)

If it occurs, the xlink:arcrole attribute MUST NOT be an empty string.

3.5.1.5     The xml:base attribute on simple links (optional)

The xml:base attribute [XML Base] MAY appear on the simple links, participating in the resolution of relative URIs specified in their xlink:href attributes.

3.5.2       The linkbase element

The [XLINK] specification defines linkbases in the following way: “documents containing collections of inbound and third-party links are called link databases, or linkbases” [XLINK] (http://www.w3.org/TR/2001/REC-xlink-20010627/#dt-linkbase). While the syntax for concepts is defined in taxonomy schemas, the semantics of those concepts are defined in XBRL linkbases. Linkbases are extended links or they are elements that contain extended links. Linkbases MAY also contain documentation elements.

The linkbase element is intended to be used as a linkbase container. The XML Schema constraints on the linkbase element are shown below.

<schema targetNamespace="http://www.xbrl.org/2003/linkbase"

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

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

  xmlns:xl="http://www.xbrl.org/2003/XLink"

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

  elementFormDefault="qualified">

 

  <element name="linkbase">

    <annotation>

      <documentation>

      Definition of the linkbase element. Used to

      contain a set of zero or more extended link elements.

      </documentation>

    </annotation>

    <complexType>

      <choice minOccurs="0" maxOccurs="unbounded">

        <element ref="link:documentation"/>

        <element ref="link:roleRef"/>

        <element ref="link:arcroleRef"/>

        <element ref="xl:extended"/>

      </choice>

      <attribute name="id" type="ID" use="optional"/>

      <anyAttribute namespace="http://www.w3.org/XML/1998/namespace"

        processContents="lax" />

    </complexType>

  </element>

 

</schema>

Example 1. A skeletal linkbase

<linkbase

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

xmlns:samp="http://www.xbrl.org/sample"

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

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

xsi:schemaLocation="http://www.xbrl.org/sample samp001.xsd"

xml:base="http://www.xbrl.org/sample">

 

<calculationLink

  xlink:role="http://www.xbrl.org/2003/role/link"

  xlink:type="extended">

  <!-- ... -->

</calculationLink>

 

</linkbase>

Meaning: Use of linkbase as the root element, holding namespace prefix definitions and the schemaLocation attribute. The “xml:” prefix need not be declared. One extended link element, the calculationLink, is contained in the linkbase.

3.5.2.1     The id attribute on linkbase elements (optional)

The linkbase element MAY have an id attribute. The value of the id attribute MUST conform to the [XML] rules for attributes with the ID type (http://www.w3.org/TR/REC-xml#NT-TokenizedType).

3.5.2.2     The xml:base attribute on linkbase elements (optional)

The xml:base attribute [XML Base] MAY appear on the linkbase element, participating in the resolution of relative URIs in the contained extended links.

3.5.2.3     Documentation elements in linkbase elements (optional)

All linkbase elements MAY also contain documentation elements.

The XML Schema constraints on the documentation element are shown below.

<schema targetNamespace="http://www.xbrl.org/2003/XLink"

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

  xmlns:xl="http://www.xbrl.org/2003/XLink"

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

  elementFormDefault="qualified"

  attributeFormDefault="unqualified">

 

  <complexType name="documentationType">

    <annotation>

      <documentation>

      Element type to use for documentation of

      extended links and linkbases.

      </documentation>

    </annotation>

    <simpleContent>

      <extension base="string">

        <anyAttribute namespace="##other" processContents="lax"/>

      </extension>

    </simpleContent>

  </complexType>

 

  <element name="documentation" type="xl:documentationType" abstract="true">

    <annotation>

      <documentation>

      Abstract element to use for documentation of

      extended links and linkbases.

      </documentation>

    </annotation>

  </element>

 

</schema>

 

<schema targetNamespace="http://www.xbrl.org/2003/linkbase"

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

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

  xmlns:xl="http://www.xbrl.org/2003/XLink"

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

  elementFormDefault="qualified">

 

  <element name="documentation"

    type="xl:documentationType"

    substitutionGroup="xl:documentation">

    <annotation>

      <documentation>

      Concrete element to use for documentation of

      extended links and linkbases.

      </documentation>

    </annotation>

  </element>

 

</schema>

The documentation element MUST have string content. The documentation element MAY contain any attribute that is not defined in the XBRL linkbase namespace, http://www.xbrl.org/2003/linkbase. For example, the documentation element MAY use the xml:lang attribute to indicate the language used for the documentation.

3.5.2.4     The roleRef element (optional)

The roleRef element is used to resolve custom xlink:role values that are used in a linkbase or XBRL instance (for footnoteLink and footnote). The roleRef element is a simple link, as defined in Section 3.5.1. The roleRef element points to the roleType element in a taxonomy schema document that declares the xlink:role attribute value (see section 5.1.3). All custom xlink:role attribute values used in a linkbase or XBRL instance on definitionLink, calculationLink, presentationLink, labelLink, referenceLink, footnoteLink, label, reference and footnote elements MUST be resolvable via a roleRef element.  The roleRef element MUST apply only to xlink:role attribute values where the xlink:role attribute has an ancestor that is the parent element of the roleRef element.

During DTS discovery, the taxonomy schema that is pointed to by the roleRef element is discovered.

The XML Schema constraints on the roleRef element are shown below.

<schema targetNamespace="http://www.xbrl.org/2003/linkbase"

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

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

  xmlns:xl="http://www.xbrl.org/2003/XLink"

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

  elementFormDefault="qualified">

 

  <element name="roleRef" substitutionGroup="xl:simple">

    <annotation>

      <documentation>

      Definition of the roleRef element - used

      to link to resolve xlink:role attribute values to

      the roleType element declaration.

      </documentation>

    </annotation>

    <complexType>

      <complexContent>

        <extension base="xl:simpleType">

          <attribute name="roleURI" type="xlink:nonEmptyURI" use="required">

            <annotation>

              <documentation>

                This attribute contains the role name.

              </documentation>

            </annotation>

          </attribute>

        </extension>

      </complexContent>

    </complexType>

  </element>

 

</schema>

3.5.2.4.1      The xlink:type attribute on roleRef elements

The xlink:type attribute MUST occur and MUST have the fixed content “simple”.

3.5.2.4.2      The xlink:href attribute on roleRef elements

A roleRef element MUST have an xlink:href attribute. The xlink:href attribute MUST be a URI. The URI MUST point to a roleType element in a taxonomy schema document. If the URI reference is relative, its absolute version MUST be determined as specified in [XML Base] before use. For details on the allowable forms of XPointer [XPTR] syntax in the URI see section 3.5.4.

3.5.2.4.3      The xlink:arcrole attribute on roleRef elements (optional)

The xlink:arcrole attribute MAY be used on the roleRef element. No semantics are defined for the xlink:arcrole attribute when it occurs on the roleRef element.

3.5.2.4.4      The xlink:role attribute on roleRef elements (optional)

The optional xlink:role attribute MUST take URI values. If it is provided, the xlink:role attribute MUST NOT be empty. No semantics are defined for the xlink:role attribute when it occurs on the roleRef element.

3.5.2.4.5      The roleURI attribute

The roleURI attribute MUST occur on the roleRef element. The roleURI attribute identifies the xlink:role attribute value that is defined by the XML resource that is pointed to by the roleRef element. The value of this attribute MUST match the value of the roleURI attribute on the roleType element that the roleRef element is pointing to.  Within a linkbase or an XBRL instance there MUST NOT be more than one roleRef element with the same roleURI attribute value.

3.5.2.5     The arcroleRef element (optional)

The arcroleRef element is used to resolve custom xlink:arcrole values that are used in a linkbase or an XBRL instance (for footnoteArc). The arcroleRef element is a simple link, as defined in Section 3.5.1. The arcroleRef element points to the arcroleType element in a taxonomy schema document that declares the xlink:arcrole attribute value (see section 5.1.4). All custom xlink:arcrole attribute values used in a linkbase or an XBRL instance on a definitionArc, calculationArc, presentationArc, labelArc, referenceArc or footnoteArc MUST be resolvable via an arcroleRef element. The arcroleRef element MUST apply only to xlink:arcrole attribute values where the xlink:arcrole attribute has an ancestor that is the parent element of the arcroleRef element.

 

During DTS discovery, the taxonomy schema that is pointed to by the arcroleRef element is discovered.

 

The XML Schema definition of the arcroleRef element is shown below.

<schema targetNamespace="http://www.xbrl.org/2003/linkbase"

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

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

  xmlns:xl="http://www.xbrl.org/2003/XLink"

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

  elementFormDefault="qualified">

 

  <element name="arcroleRef" substitutionGroup="xl:simple">

    <annotation>

      <documentation>

      Definition of the roleRef element - used

      to link to resolve xlink:arcrole attribute values to

      the arcroleType element declaration.

      </documentation>

    </annotation>

    <complexType>

      <complexContent>

        <extension base="xl:simpleType">

          <attribute name="arcroleURI" type="xlink:nonEmptyURI" use="required">

            <annotation>

              <documentation>

                This attribute contains the arc role name.

              </documentation>

            </annotation>

          </attribute>

        </extension>

      </complexContent>

    </complexType>

  </element>

 

</schema>

3.5.2.5.1      The xlink:type attribute on arcroleRef elements

The xlink:type attribute MUST occur and MUST have the fixed content “simple”.

3.5.2.5.2      The xlink:href attribute on arcroleRef elements

An arcroleRef element MUST have an xlink:href attribute. The xlink:href attribute MUST be a URI. The URI MUST point to an arcroleType element in a taxonomy schema document. If the URI reference is relative, its absolute version MUST be determined as specified in [XML Base] before use. For details on the allowable forms of XPointer [XPTR] syntax in the URI see section 3.5.4.

3.5.2.5.3      The xlink:arcrole attribute on arcroleRef elements (optional)

The xlink:arcrole attribute MAY be used on the arcroleRef element. No semantics are defined for the xlink:arcrole attribute when it occurs on the arcroleRef element.

3.5.2.5.4      The xlink:role attribute on arcroleRef elements (optional)

The optional xlink:role attribute MUST take URI values. If it is provided, the xlink:role attribute MUST NOT be empty. No semantics are defined for the xlink:role attribute when it occurs on the arcroleRef element.

3.5.2.5.5      The arcroleURI attribute

The arcroleURI attribute MUST occur on the arcroleRef element. The arcroleURI attribute identifies the xlink:arcrole attribute value that is defined by the XML resource that is pointed to by the arcroleRef element. The value of this attribute MUST match the value of the arcroleURI attribute on the arcroleType element that the arcroleRef element is pointing to.  Within a linkbase or an XBRL instance there MUST NOT be more than one arcroleRef element with the same arcroleURI attribute value.

 

3.5.3       Extended links

Extended links are [XLINK] annotated XML fragments that document a set of relationships between resources. XBRL extended links document relationships between resources that are XML fragments.

The generic XML Schema constraints on the extended links used by XBRL are shown below.

<schema targetNamespace="http://www.xbrl.org/2003/XLink"

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

  xmlns:xl="http://www.xbrl.org/2003/XLink"

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

  elementFormDefault="qualified"

  attributeFormDefault="unqualified">

 

  <complexType name="extendedType">

    <annotation>

      <documentation>

      Generic extended link type

      </documentation>

    </annotation>

    <complexContent>

      <restriction base="anyType">

        <choice minOccurs="0" maxOccurs="unbounded">

          <element ref="xl:title" />

          <element ref="xl:documentation" />

          <element ref="xl:locator" />

          <element ref="xl:arc" />

          <element ref="xl:resource" />

        </choice>

        <attributeGroup ref="xlink:extendedType"/>

        <attribute ref="xlink:role" use="required" />

        <attribute ref="xlink:title" use="optional" />

        <attribute name="id" type="ID" use="optional" />

        <anyAttribute namespace="http://www.w3.org/XML/1998/namespace"

          processContents="lax" />

      </restriction>

    </complexContent>

  </complexType>

  <element name="extended" type="xl:extendedType" abstract="true">

    <annotation>

      <documentation>

      Abstract extended link element at head of extended link substitution group.

      </documentation>

    </annotation>

  </element>

 

</schema>

XBRL extended links MAY contain five different types of child elements:

·          documentation elements;

·          title elements (titles);

·          locator elements (locators);

·          resource elements (resources); and

·          arc elements (arcs).

The documentation element is for XBRL documentation purposes only and has no [XLINK]-specific semantics. Titles, locators, resources and arcs are identified by specific [XLINK] attributes. If the titles, locators, resources and arcs are not direct children of an extended element, then they have no [XLINK] specified meaning, and hence have no XBRL-specified meaning.

The attributes for XBRL extended links are described below.

3.5.3.1     The id attribute on extended links (optional)

Extended links MAY have an id attribute. The value of the id attribute MUST conform to the [XML] rules for attributes with the ID type (See http://www.w3.org/TR/REC-xml#NT-TokenizedType for details). The id attribute identifies an extended link (see Section 4.8) so that it may be referenced directly by simple links.

3.5.3.2     The xlink:type attribute on extended links

The xlink:type attribute MUST occur on extended links and MUST have the fixed content “extended”.

3.5.3.3     The xlink:role attribute on extended links

The xlink:role attribute MUST occur on extended links defined in this specification. The content of the xlink:role attribute is referred to as the extended link role value. The extended link role value MUST be used by applications to partition extended links into separate networks of relationships. See Section 5.2 for details on how the semantics embodied in extended link arcs is contingent on extended link arc role values. The xlink:role attribute MUST NOT be empty. The xlink:role attribute value MUST be a URI value as defined by the [XLINK] specification. A standard value that MAY be used for extended link xlink:role attributes, without requiring a custom role type definition (See Section 5.1.3), is:

http://www.xbrl.org/2003/role/link

For the extended link elements defined in this specification (definitionLink, calculationLink, presentationLink, labelLink, referenceLink and footnoteLink), all other xlink:role values MUST be defined with a custom role type definition roleType element (See Section 5.1.3) and resolved via a roleRef element (see Section 3.5.2.4).

3.5.3.4     The xml:base attribute on extended links (optional)

The xml:base attribute [XML Base] MAY appear on the extended links, participating in the resolution of relative URIs that they contain.

3.5.3.5     Documentation elements in extended links (optional)

All XBRL extended links MAY contain documentation elements.

The documentation elements in extended links conform to the same syntax requirements that apply to documentation elements in linkbase elements. See Section 3.5.2.1 for details.

3.5.3.6     Titles in extended links (optional)

All XBRL extended links MAY contain titles. Titles may be used to document extended links, as an alternative to the more limited xlink:title attributes. They are particularly useful where information needs to be provided in multiple languages. Titles have no XBRL specified semantics. To use a title in an extended link, it is necessary to define a new element that is in the substitution group for the abstract title element.

The XML Schema constraints on the titles are shown below.

<schema targetNamespace="http://www.xbrl.org/2003/XLink"

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

  xmlns:xl="http://www.xbrl.org/2003/XLink"

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

  elementFormDefault="qualified"

  attributeFormDefault="unqualified">

 

  <complexType name="titleType">

    <annotation>

      <documentation>

      Type for the abstract title element -

      used as a title element template.

      </documentation>

    </annotation>

    <complexContent>

      <restriction base="anyType">

        <attributeGroup ref="xlink:titleType"/>

      </restriction>

    </complexContent>

  </complexType>

  <element name="title" type="xl:titleType" abstract="true">

    <annotation>

      <documentation>

      Generic title element for use in extended link documentation.

      Used on extended links, arcs, locators.

      See http://www.w3.org/TR/xlink/#title-element for details.

      </documentation>

    </annotation>

  </element>

 

</schema>

3.5.3.6.1      The xlink:type attribute on titles

The xlink:type attribute MUST occur on all titles and MUST have the fixed content “title”.

3.5.3.7     Locators

Locators are child elements of an extended link that point to resources external to the extended link itself. All XBRL extended links MAY contain locators.

The XML Schema constraints on generic locators are shown below.

<schema targetNamespace="http://www.xbrl.org/2003/XLink"

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

  xmlns:xl="http://www.xbrl.org/2003/XLink"

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

  elementFormDefault="qualified"

  attributeFormDefault="unqualified">

 

  <complexType name="locatorType">

    <annotation>

      <documentation>

      Generic locator type.

      </documentation>

    </annotation>

    <complexContent>

      <restriction base="anyType">

        <sequence>

          <element ref="xl:title" minOccurs="0" maxOccurs="unbounded" />

        </sequence>

        <attributeGroup ref="xlink:locatorType"/>

        <attribute ref="xlink:href" use="required" />

        <attribute ref="xlink:label" use="required" />

        <attribute ref="xlink:role" use="optional" />

        <attribute ref="xlink:title" use="optional" />

      </restriction>

    </complexContent>

  </complexType>

  <element name="locator" type="xl:locatorType" abstract="true">

    <annotation>

      <documentation>

      Abstract locator element to be used as head of locator substitution group

      for all extended link locators in XBRL.

      </documentation>

    </annotation>

  </element>

 

</schema>

For consistency, the loc element is the only locator defined for use in XBRL extended links. The loc element is a concrete version of the generic locator. The XML Schema syntax constraints on the loc element are shown below.

<schema targetNamespace="http://www.xbrl.org/2003/linkbase"

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

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

  xmlns:xl="http://www.xbrl.org/2003/XLink"

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

  elementFormDefault="qualified">

 

  <element name="loc" type="xl:locatorType" substitutionGroup="xl:locator">

    <annotation>

      <documentation>

      Concrete locator element. The loc element is the

      XLink locator element for all extended links in XBRL.

      </documentation>

    </annotation>

  </element>

 

</schema>

3.5.3.7.1      The xlink:type attribute on locators

The xlink:type attribute MUST occur on all locators and MUST have the fixed content “locator”.

3.5.3.7.2      The xlink:href attribute on locators

A locator MUST have an xlink:href attribute. The xlink:href attribute MUST be a URI. The URI MUST point to an XML document or to one or more XML fragments within an XML document. If the URI is relative, it MUST be resolved to obtain an absolute URI as specified in XML Base specification [XML Base]. For details on the allowable forms of XPointer [XPTR] syntax in the URI see section 3.5.4.

3.5.3.7.3      The xlink:label attribute on locators

The xlink:label attribute on a locator identifies the locator so that arcs in the same extended link can reference it. Multiple locators and resources in an extended link MAY have the same xlink:label attribute value. The xlink:label attribute value MUST be an NCName [XML] (http://www.w3.org/TR/REC-xml-names/#NT-NCName). This requirement means that xlink:label attributes MUST begin with a letter or an underscore.

3.5.3.7.4      Titles on locators (optional)

Locators MAY contain titles. Title children of locators MUST conform to the same restrictions applying to title children of extended links. See Section 3.5.3.6 for details.

3.5.3.8     Resources

Some XBRL extended links MAY contain resources. A resource is an XML fragment in an extended link that is related to other resources in the extended link and to resources outside of the extended link.

The XML Schema constraints on generic resources are shown below.

<schema targetNamespace="http://www.xbrl.org/2003/XLink"

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

  xmlns:xl="http://www.xbrl.org/2003/XLink"

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

  elementFormDefault="qualified"

  attributeFormDefault="unqualified">

 

  <complexType name="resourceType">

    <annotation>

      <documentation>

      Generic type for the resource type element

      </documentation>

    </annotation>

    <complexContent mixed="true">

      <restriction base="anyType">

        <attributeGroup ref="xlink:resourceType"/>

        <attribute ref="xlink:label" use="required" />

        <attribute ref="xlink:role" use="optional" />

        <attribute ref="xlink:title" use="optional" />

        <attribute name="id" type="ID" use="optional" />

      </restriction>

    </complexContent>

  </complexType>

  <element name="resource" type="xl:resourceType" abstract="true">

    <annotation>

      <documentation>

      Abstract element to use as head of resource element substitution group.

      </documentation>

    </annotation>

  </element>

 

</schema>

The content of generic resources is very loosely constrained. More specific constraints are applied by this specification for specific kinds of resources in specific kinds of extended links.

3.5.3.8.1      The xlink:type attribute on resources

The xlink:type attribute MUST occur on all resources and MUST have the fixed content “resource”.

3.5.3.8.2      The xlink:label attribute on resources

The xlink:label attribute on a resource identifies the resource so that arcs in the same extended link can reference it. The xlink:label attribute on resources conforms to the same requirements applying to the xlink:label attribute on locators. See Section 3.5.3.7.3 for details. Several resources in an extended link MAY have the same label.

3.5.3.8.3      The xlink:role attribute on resources (optional)

The optional xlink:role attribute on a resource is referred to as the resource role value.

Resources MAY contain an xlink:role attribute, which SHOULD distinguish between resources based on the nature of the information that they contain. Some of the resources defined in this specification have a set of standard resource role values defined for them. The xlink:role attribute value MUST be a URI value as defined by the [XLINK] specification.  For the resource elements defined in this specification (label, reference and footnote), all xlink:role values that are not standard for the resource element MUST be defined with a custom role type definition roleType element (see Section 5.1.3) and resolved via a roleRef element (see Section 3.5.2.4).  Standard xlink:role values are defined in specific section for each resource element.

3.5.3.8.4      The id attribute on resources (optional)

The id attribute MAY occur on all resources in XBRL extended links. The value of the id attribute MUST conform to the [XML] rules for attributes with the ID type (http://www.w3.org/TR/REC-xml#NT-TokenizedType). The id attribute identifies the resource  so that it may be referenced by locators in other extended links for the purposes of arc prohibition (See Section 3.5.3.9.5).

3.5.3.9     Arcs

All XBRL extended links MAY contain arcs. Arcs document relationships between resources identified by locators in extended links or occurring as resources in extended links.

The XML Schema constraints on generic arcs are shown below.

<schema targetNamespace="http://www.xbrl.org/2003/XLink"

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

  xmlns:xl="http://www.xbrl.org/2003/XLink"

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

  elementFormDefault="qualified"

  attributeFormDefault="unqualified">

 

  <simpleType name="useEnum">

    <annotation>

      <documentation>

      Enumerated values for the use attribute on extended link arcs.

      </documentation>

    </annotation>

    <restriction base="NMTOKEN">

      <enumeration value="optional" />

      <enumeration value="prohibited" />

    </restriction>

  </simpleType>

 

  <complexType name="arcType">

    <annotation>

      <documentation>

      basic extended link arc type - extended where necessary for specific arcs

      Extends the generic arc type by adding use, priority and order attributes.

      </documentation>

    </annotation>

    <complexContent>

      <restriction base="anyType">

        <sequence>

          <element ref="xl:title" minOccurs="0" maxOccurs="unbounded" />

        </sequence>

        <attributeGroup ref="xlink:arcType"/>

        <attribute ref="xlink:from" use="required" />

        <attribute ref="xlink:to" use="required" />

        <attribute ref="xlink:arcrole" use="required" />

        <attribute ref="xlink:title" use="optional" />

        <attribute ref="xlink:show" use="optional" />

        <attribute ref="xlink:actuate" use="optional" />

        <attribute name="order" type="decimal" use="optional" />

        <attribute name="use" type="xl:useEnum" use="optional" />

        <attribute name="priority" type="integer" use="optional" />

        <anyAttribute namespace="##other" processContents="lax" />

      </restriction>

    </complexContent>

  </complexType>

  <element name="arc" type="xl:arcType" abstract="true">

    <annotation>

      <documentation>

      Abstract element to use as head of arc element substitution group.

      </documentation>

    </annotation>

  </element>

 

</schema>

 

Arcs represent relationships between the XML fragments referenced by their [XLINK] attributes: xlink:from and xlink:to. The xlink:from and the xlink:to attributes represent each side of the arc.  These two attributes contain the xlink:label attribute values of locators and resources within the same extended link as the arc itself.  For a locator, the referenced XML fragments comprise the set of XML elements identified by the xlink:href attribute on the locator. For a resource, the referenced XML fragment is the resource element itself.

An arc MAY reference multiple XML fragments on each side (“from” and “to”) of the arc. This can occur if there are multiple locators and/or resources in the extended link with the same xlink:label attribute value identified by the xlink:from or xlink:to attribute of the arc. Such arcs represent a set of one-to-one relationships between each of the XML fragments on their “from” side and each of the XML fragments on their “to” side.

Example 2. One-to-One arc relationships [XLINK]

This presentation link contains an arc that relates one XBRL concept to one other XBRL concept. The XML fragment on the “from” side is the conceptA element definition, found in the example.xsd taxonomy schema. The XML fragment on the “to” side is the conceptB element definition, also found in the example.xsd taxonomy schema.

<presentationLink xlink:type="extended"
  xlink:role="http://www.xbrl.org/2003/role/link">
  <loc xlink:type="locator" xlink:label="a" xlink:href="example.xsd#conceptA"/>
  <loc xlink:type="locator" xlink:label="b" xlink:href="example.xsd#conceptB"/>
  <presentationArc xlink:type="arc" xlink:from="a" xlink:to="b"
    xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" order="1"/>
</presentationLink>

Example 3. One-to-Many arc relationships [XLINK]

This label link contains a single arc that relates one XBRL concept to two XBRL labels.  This is accomplished by giving each of the label resources the same xlink:label attribute value, which, in turn, is the same as the xlink:to attribute value on the arc. The arc represents two relationships, one between conceptA and the standard label (“Concept A”) and another between conceptA and the total label (“Total of Concept A”).

<labelLink xlink:type="extended"
  xlink:role="http://www.xbrl.org/2003/role/link">
  <loc xlink:type="locator" xlink:label="a" xlink:href="example.xsd#conceptA"/>
  <label xlink:type="resource" xml:lang="en" xlink:label="lab_a" xlink:role="http://www.xbrl.org/2003/role/label">Concept A</label>
  <label xlink:type="resource" xml:lang="en" xlink:label="lab_a" xlink:role="http://www.xbrl.org/2003/role/totalLabel">Total of Concept A</label>
  <labelArc xlink:type="arc" xlink:from="a" xlink:to="lab_a"
    xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label"/>
</labelLink>

This extended link could also express the same two relationships but be written with separate xlink:label attribute values for each label and two arcs.

<labelLink xlink:type="extended"
  xlink:role="http://www.xbrl.org/2003/role/link">
  <loc xlink:type="locator" xlink:label="a" xlink:href="example.xsd#conceptA"/>
  <label xlink:type="resource" xml:lang="en" xlink:label="lab_a_standard" xlink:role="http://www.xbrl.org/2003/role/label">Concept A</label>
  <label xlink:type="resource" xml:lang="en" xlink:label="lab_a_total" xlink:role="http://www.xbrl.org/2003/role/totalLabel">Total of Concept A</label>
  <labelArc xlink:type="arc" xlink:from="a" xlink:to="lab_a_standard"
    xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label"/>
  <labelArc xlink:type="arc" xlink:from="a" xlink:to="lab_a_total"
    xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label"/>
</labelLink>

Semantically, these two extended links represent the same set of relationships between the concept and its labels.

Example 4. Many-to-Many arc relationships [XLINK]

This label link contains a single arc that relates two concepts to two labels.  This is accomplished by each of the locators for the concepts having the same xlink:label attribute value, which in turn is the same as the xlink:from attribute value on the arc, and by each of the label resources having the same xlink:label attribute value, which in turn is the same as the xlink:to attribute value.

<labelLink xlink:type="extended"
  xlink:role="http://www.xbrl.org/2003/role/link">
  <loc xlink:type="locator" xlink:label="ab" xlink:href="example.xsd#conceptA"/>
  <loc xlink:type="locator" xlink:label="ab" xlink:href="example.xsd#conceptB"/>
  <label xlink:type="resource" xml:lang="en" xlink:label="lab_ab" xlink:role="http://www.xbrl.org/2003/role/label">Concept A or B</label>
  <label xlink:type="resource" xml:lang="en" xlink:label="lab_ab" xlink:role="http://www.xbrl.org/2003/role/totalLabel">Total of Concept A or B</label>
  <labelArc xlink:type="arc" xlink:from="ab" xlink:to="lab_ab"
    xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label"/>
</labelLink>

The arc represents 4 relationships as follows:

1.      between conceptA and the label resource “Concept A or B”

2.      between conceptA and the label resource “Total of Concept A or B”

3.      between conceptB and the label resource “Concept A or B”

4.      between conceptB and the label resource “Total of Concept A or B”

Like the one-to-many example, this extended link could be re-written as 4 one-to-one arcs, where each locator and each resource has a unique xlink:label attribute value. It could also be re-written as two one-to-two arcs where the label resources have the same xlink:label attribute value and the locators have unique xlink:label attribute values or vice versa.

 

There MUST not be any [XLINK] duplicate arcs within an extended link. [XLINK] duplicate arcs are arcs that have the same pair of values for the xlink:from and xlink:to attributes within an extended link.

 

Example 5. Correct use of arcs according to [XLINK]

[XLINK] forbids duplicate arcs within a single extended link and ignores arcrole in determining duplicates so the following example is invalid (See Section 5.2.6 for details of definitionLink extended links):

<definitionLink xlink:type="extended"
  xlink:role="http://www.xbrl.org/2003/role/link">
  <loc xlink:type="locator" xlink:label="a" xlink:href="example.xsd#conceptA"/>
  <loc xlink:type="locator" xlink:label="b" xlink:href="example.xsd#conceptB"/>
  <definitionArc xlink:type="arc" xlink:from="a" xlink:to="b"
    xlink:arcrole="http://www.xbrl.org/2003/arcrole/general‑special" />
  <definitionArc xlink:type="arc" xlink:from="a" xlink:to="b"
    xlink:arcrole="http://www.xbrl.org/2003/arcrole/requires-element"/>
</definitionLink>

instead, an alternative construction that is legal according to [XLINK], such as the following, MUST be used:

<definitionLink xlink:type="extended"
xlink:role="http://www.xbrl.org/2003/role/link">
  <loc xlink:type="locator" xlink:label="a" xlink:href="example.xsd#conceptA"/>
  <loc xlink:type="locator" xlink:label="b" xlink:href="example.xsd#conceptB"/>
  <definitionArc xlink:type="arc" xlink:from="a" xlink:to="b"
    xlink:arcrole="http://www.xbrl.org/2003/arcrole/general‑special" />
</definitionLink>
<definitionLink xlink:type="extended"
xlink:role="http://www.xbrl.org/2003/role/link">
  <loc xlink:type="locator" xlink:label="a" xlink:href="example.xsd#conceptA"/>
  <loc xlink:type="locator" xlink:label="b" xlink:href="example.xsd#conceptB"/>
  <definitionArc xlink:type="arc" xlink:from="a" xlink:to="b"
    xlink:arcrole="http://www.xbrl.org/2003/arcrole/requires-element"/>
</definitionLink>

3.5.3.9.1      The xlink:type attribute on arcs

The xlink:type attribute MUST occur on all arcs and MUST have the fixed content “arc”.

3.5.3.9.2      The xlink:from attribute

The xlink:from attribute on an arc MUST be equal to the value of an xlink:label attribute of at least one locator or resource in the same extended link element as the arc element itself.

The xlink:from attribute value MUST be an NCName [XML] (http://www.w3.org/TR/REC-xml-names/#NT-NCName). This requirement means that xlink:from attributes MUST begin with a letter or an underscore.

3.5.3.9.3      The xlink:to attribute

The xlink:to attribute on an arc MUST be equal to the value of an xlink:label attribute of at least one locator or resource in the same extended link element as the arc element itself.

The xlink:to attribute value MUST be an NCName [XML] (http://www.w3.org/TR/REC-xml-names/#NT-NCName). This requirement means that xlink:to attributes MUST begin with a letter or an underscore.

3.5.3.9.4      The xlink:arcrole attribute

The xlink:arcrole attribute documents the specific kind of relationship being expressed by the arc. Its value is referred to as an arc role value. A set of standard arc role values are defined and given specific meaning in this specification for each arc element. These are documented in the sections describing the specific XBRL arc elements (labelArc, referenceArc, calculationArc, definitionArc, presentationArc, and footnoteArc) on which they are to be used.

Custom arc role values MAY be defined in taxonomy schemas. The semantics for custom arc role values are defined using the arcroleType element (see Section 5.1.4). An arc role value MUST be an absolute URI that can be resolved to address the fragment of an XML Schema document containing the arcroleType element.

3.5.3.9.5      The order attribute (optional)

The optional order attribute MUST have a decimal value that that indicates the order in which applications MUST display siblings when hierarchical networks of relationships are being displayed. If missing, the order attribute value MUST default to "1". If multiple siblings in the hierarchy have the same order attribute value, the presentation order of those siblings is application dependent. The value of the order attribute is not restricted to integers, which is useful when there is a need to place a new sibling in between two previously defined siblings.

3.5.3.9.6      Titles on arcs (optional)

Arcs MAY contain titles. Title children of arcs MUST conform to the same restrictions applying to title children of extended links. See Section 3.5.3.6 for details.

3.5.3.9.7      Prohibiting and overriding relationships

A taxonomy author will generally not have write permissions on linkbases created by other taxonomy authors. In situations where a taxonomy author needs to modify the relationships expressed in linkbases that they cannot alter directly, they may create new linkbases that contain arcs that represent relationships that prohibit or override the specific relationships that are to be modified. Both overriding and prohibiting an existing relationship is achieved by constructing a new arc.

A prohibiting arc is an arc that represents a prohibiting relationship or a set of prohibiting relationships. A prohibiting relationship is a relationship that negates another relationship. An overriding arc is an arc that represents an overriding relationship or a set of overriding relationships. An overriding relationship is a relationship that supersedes another relationship. Prohibition and overriding are relevant when determining the relationships in a network of relationships represented in a DTS (See Section 3.5.3.9.7.3).

Arcs that represent prohibiting and overriding relationships are controlled by two attributes, use and priority, which are available on all arc elements defined in this specification.

3.5.3.9.7.1      The use attribute (optional)

The optional use attribute MUST take one of two possible values – "optional", or "prohibited".

use="optional" indicates that the arc represents a relationship or set of relationships that MAY participate in a network of relationships represented by arcs in a DTS (See Section 3.5.3.9.7.3 for details on networks of relationships in a DTS). This is the default value that MUST be inferred for the use attribute if the use attribute is not specified.

use="prohibited" indicates that this arc represents a relationship or set of relationships that prohibit themselves and other equivalent relationships from participating in a network of relationships represented by arcs in a DTS (See Section 3.5.3.9.7.4 for details on relationship equivalency).  Such relationships are referred to as prohibiting relationships.

3.5.3.9.7.2      The priority attribute (optional)

The content of the priority attribute MUST be an integer. The default value of the priority attribute is “0”. The priority attribute is used when applying the rules of prohibition and overriding in a network of relationships. Each relationship has a priority equal to the value of the priority attribute on the arc that represents the relationship.

3.5.3.9.7.3      Networks of relationships in a DTS

The arcs expressed in the extended links within a DTS describe networks of relationships between XML fragments.

Individually, each arc describes one or more relationships. However, within a DTS, only some of those relationships participate in the networks of relationships described by the DTS.

All relationships in the DTS are candidates for inclusion in the networks of relationships described by the DTS.  However, some relationships are excluded from the networks of relationships described by the DTS because they are prohibited or overridden by other relationships.

All arcs in a DTS are grouped into base sets of arcs. All arcs in a base set of arcs:

·          have the same local name, namespace and xlink:arcrole attribute value on the arc element; and

·          are contained in extended link elements that have the same local name, namespace, and xlink:role attribute value.

Each base set of arcs in a DTS represents the set of candidates for inclusion in a network of relationships. For each base set of arcs in a DTS, the rules of relationship prohibition and overriding determine the subset of relationships in that base set that participate in the corresponding network of relationships represented by arcs in the DTS.

3.5.3.9.7.4      Equivalent relationships

Applying the rules of relationship prohibition and overriding requires a comparison of each relationship represented by arcs in the base set to all other relationships represented by arcs in the base set.

Two relationships represented by arcs in a given base set are equivalent if:

·          the value of any non-XLink attribute, except use and priority, on a defining arc is s-equal to the s-equal non-XLink attribute on the other arc or is s-equal to the value that the non-XLink attribute defaults to, if there is no such s-equal non-XLink attribute on the other arc (see section 4.10 for definition of s-equal); and

·          the XML fragments on the “from” sides of the relationships are identical as defined in section 4.10 (See Section 3.5.3.9 for an explanation of the XML fragments identified by the xlink:from attribute on arcs); and

·          the XML fragments on the “to” sides of the relationships are identical as defined in section 4.10 (See Section 3.5.3.9 for an explanation of the XML fragments identified by the xlink:to attribute on arcs).

3.5.3.9.7.5      Rules of prohibiting and overriding relationships

The rules of prohibiting and overriding relationships employ the use and priority attributes on arcs and the notion of relationship equivalence to determine, for each relationship expressed by arcs in a base set, if that relationship is included in the network of relationships for that base set of arcs.

The rules of prohibition and overriding are applied to each set of equivalent relationships represented by arcs in the base set as follows:

i.                     None of the prohibiting relationships in the set are ever included in the network of relationships represented by arcs in the base set.

ii.                   If only one relationship has the highest priority and that relationship is not prohibiting, then that relationship is an overriding relationship and is included in the network of relationships for the base set. All other equivalent relationships are not included in the network of relationships for the base set of arcs.

iii.                  If there is more than one relationship with the highest priority and none of them are prohibiting, then one of those highest priority relationships MUST be included in the network of relationships for the base set of arcs.  The relationship that is chosen for inclusion is an overriding relationship. All of the other equivalent relationships MUST be excluded from the network of relationships (these are overridden relationships) for the base set of arcs. The choice of which relationship is included in the network of relationships for the base set of arcs is application dependent.

iv.                 If there are one or more relationships with the highest priority and at least one of those relationships is prohibiting, then none of the equivalent relationships are included in the network of relationships (these equivalent relationships, which are not prohibiting relationships, are prohibited relationships) for the base set of arcs.

 

Example 6. Prohibiting and overriding relationships

The following set of examples includes some unlikely but nevertheless possible situations and demonstrates how they are dealt with according to the rules of prohibiting and overriding relationships. These examples anticipate a series of extension taxonomies being created, possibly by different authors who do not have write access to the taxonomies that they are extending.

If the following two arcs in a base set of arcs represent a set of equivalent relationships, then neither of those relationships is included in the network of relationships associated with that base set of arcs.

·          Arc A with use="optional" and priority="1" represents relationship A

·          Arc B with use="prohibited" and priority="2" represents relationship B

Arc B has the higher priority and represents a prohibiting relationship. Therefore relationship B excludes relationship A from the network of relationships associated with the base set of arcs. Relationship B is prohibiting and so, by definition, is excluded from the network of relationships associated with the base set of arcs (by application of rules i and iv).

If another arc is subsequently introduced into the base set of arcs as follows:

·          Arc C with use="prohibited" and priority="3" represents relationship C

and relationship C is equivalent to the relationships A and B, then, since it has the highest priority, it is a prohibiting relationship. Therefore relationship C excludes relationship A from the network of relationships associated with the base set of arcs. Relationships B and C are prohibiting and so, by definition, are excluded from the network of relationships associated with the base set of arcs (by application of rules i and iv).

If another arc is subsequently introduced into the base set of arcs as follows:

·          Arc D with use="optional" and priority="4" represents relationship D

and relationship D is equivalent to the relationships A, B and C, then, since it has the highest priority, it is an overriding relationship. Relationships A, B and C are therefore not included in the network of relationships associated with the base set of arcs. This relationship D thus effectively overrides the effect of the prohibiting relationships B and C and therefore is included in the network of relationships associated with the base set of arcs  (by application of rule ii).

If another arc is subsequently introduced into the base set of arcs as follows:

·          Arc E with use="optional" and priority="4" represents relationship E

and relationship E is equivalent to the relationships A, B, C and D, then, since it has the same priority as D, it is application dependent as to which of D and E is the overriding relationship. Relationships A, B and C are still not included in the network of relationships associated with the base set of arcs  (by application of rule iii). Since the relationships are equivalent, the fact that it is application dependent as to which of D and E is the overriding relationship is unimportant because the choice of one over the other does not affect the semantics being expressed.

If another arc is subsequently introduced into the base set of arcs as follows:

·          Arc F with use="prohibited" and priority="4" represents relationship F

and relationship F is equivalent to the relationships A, B, C, D and E, then, since it is one of the relationships with the highest priority, it is a prohibiting relationship and thus none of the equivalent relationships A, B, C, D, E or F are included in the network of relationships associated with the base set of arcs (by application of rule iv).

The process of dividing all discovered arcs in a DTS into base sets and applying the rules of prohibition and overriding results in a set of networks of relationships, where each network contains relationships that:

·          are represented by arcs that have the same local name, namespace and xlink:arcrole attribute value on the arcType element; and

·          are represented by arcs that are contained in extendedType elements with the same local name, namespace, and xlink:role attribute value; and

·          are not prohibited, prohibiting or overridden relationships.

3.5.4       Use of XPointer in URI fragment identifiers

To point to a particular XML element, URIs used in [XLINK] hrefs MUST end in a fragment identifier. According to the [XLINK] specification, XPointer [XPTR] syntax is allowed in the fragment identifier. The format of the fragment identifier MUST conform to the requirements set out for shorthand pointers (http://www.w3.org/TR/xptr-framework/#shorthand) or to the requirements set out for a scheme-based pointer (http://www.w3.org/TR/xptr-framework/#scheme).  The only scheme allowed for scheme-based pointers in XBRL links is the element scheme [ELEMENT].

Example 7. Example xlink:href values

Example

Meaning

#f1

The fragment of the current document with an id attribute equal to “f1”

us_bs_v21.xsd#currentAssets

The element of the document us_bs_v21.xsd with an id attribute equal to ”currentAssets”

us_bs_v21.xsd#element(/1/14)

The element of the document us_bs_v21.xsd that is the 14 child (in document order) of the root element.

us_bs_v21.xsd#element(currentAssets)

The element of the document us_bs_v21.xsd with an id attribute equal to ”currentAssets”

 

4         XBRL instances

An overview of XBRL instances is provided in Section 3.2.

XBRL instances are XML fragments with root element, xbrl. XBRL instances contain facts, with each fact corresponding to a concept defined in their supporting DTS. XBRL instances also contain context and unit elements that provide additional information needed to interpret the facts in the instance.

Facts can be simple, in which case their values are expressed as simple content (except in the case of simple facts whose values are expressed as a ratio), and facts can be compound, in which case their values are made up from other simple and/or compound facts. Simple facts are expressed using items (and are referred to as items in this specification) and compound facts are expressed using tuples (and are referred to as tuples in this specification).

Although the syntax for any given tuple or item can only be defined in a single taxonomy schema, an XBRL instance MAY contain XBRL items and tuples from any number of taxonomy schemas.

XBRL instances identify the taxonomy schemas and XBRL linkbases that make up the starting points for discovery of the DTS that supports them. Section 3.2 documents how the DTS supporting an XBRL instance is to be determined.

The taxonomy schemas and the linkbases used as starting points in DTS discovery are identified via the schemaRef elements and linkbaseRef elements in XBRL instances respectively. This enables XBRL instances to exert some control over the interpretation of the information that they report.

For example, the same set of elements defined in a taxonomy schema might have Spanish and Portuguese literature references defined in different linkbases (that are not referenced directly from that schema). An instance might provide access to both or neither of these linkbases in order to specify which set of references the producer considers to be more appropriate.

An XBRL instance MUST comply with the rules specified herein. The syntax for XBRL instances is constrained using a set of XML Schemas. Example elements defined in the XBRL instance schema, xbrl-instance-2003-12-31.xsd (normative), include xbrl, item, context, unit, and tuple. All XBRL instances MUST be valid XML documents as defined by XML Schema [SCHEMA‑1].

The semantics of XBRL instances and their contents are specified only insofar as they impact the operation of software applications that use this specification.

4.1        The xbrl element

Expressing even a single fact in an XBRL instance requires multiple elements: at least one item element (see Section 4.1.1) and a context element containing sub-elements (see Section 4.7 below). Therefore, a container element is necessary to serve as the root element of an XBRL instance. This container is the xbrl element. If multiple “data islands” of XBRL mark-up are included in a larger document, the xbrl element is the container for each.

The XML Schema constraints on the xbrl element are shown below.

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

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

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

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

  elementFormDefault="qualified">

 

  <element name="xbrl">

    <annotation>

      <documentation>

      XBRL instance root element.

      </documentation>

    </annotation>

    <complexType>

      <sequence>

        <element ref="link:schemaRef" minOccurs="1" maxOccurs="unbounded" />

        <element ref="link:linkbaseRef" minOccurs="0" maxOccurs="unbounded" />

        <element ref="link:roleRef" minOccurs="0" maxOccurs="unbounded" />

        <element ref="link:arcroleRef" minOccurs="0" maxOccurs="unbounded" />

        <choice minOccurs="0" maxOccurs="unbounded">

          <element ref="xbrli:item"/>

          <element ref="xbrli:tuple"/>

          <element ref="xbrli:context"/>

          <element ref="xbrli:unit"/>

          <element ref="link:footnoteLink"/>

        </choice>

      </sequence>

      <attribute name="id" type="ID" use="optional" />

      <anyAttribute namespace="http://www.w3.org/XML/1998/namespace"

        processContents="lax" />

    </complexType>

  </element>

 

</schema>

Example 8. Use of xbrl as the root element

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

      xmlns:xlink="http://www.xbrl.org/2001/XLink"

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

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

      xmlns:ci="http://www.xbrl.org/us/gaap/ci/2003/usfr-ci-2003"

      xsi:schemaLocation="

http://www.xbrl.org/us/fr/ci/2003/usfr-ci-2003

http://www.xbrl.org/us/fr/ci/2000-07-31/usfr-ci-2003.xsd">

  <link:schemaRef xlink:type="simple"

             xlink:href="http://www.xbrl.org/us/fr/ci/2000-07-31/usfr-ci-2003.xsd"/>

  <ci:assets precision="3" unitRef="u1" contextRef="c1">727</ci:assets>

  <ci:liabilities precision="3" unitRef="u1" contextRef="c1">635</ci:liabilities>

  <context id="c1"><!-- ... --></context>

  <unit id="u1"><!-- ... --></unit>

</xbrl>

Meaning: xbrl holds namespace prefix definitions and the schemaLocation attribute.

4.1.1       The id attribute on xbrl elements (optional)

The xbrl element MAY have an id attribute. The value of the id attribute MUST conform to the [XML] rules for attributes with the ID type (http://www.w3.org/TR/REC-xml#NT-TokenizedType).

4.1.2       The xml:base attribute on xbrl elements (optional)

The xbrl element MAY have an xml:base attribute. The xml:base attribute [XML Base] MAY appear on the xbrl element, participating in the resolution of relative URIs in the XBRL instance.

4.2        The schemaRef element in XBRL Instances

Every XBRL instance MUST contain at least one schemaRef element. The schemaRef element is a simple link, as defined in Section 3.5.1. The schemaRef element MUST occur as a child element of an xbrl element. All schemaRef elements in an XBRL instance MUST occur before other children of the xbrl element, in document order.

In an XBRL instance, the schemaRef element points to a taxonomy schema that becomes part of the DTS supporting that XBRL instance.

NOTE: XBRL instance creators should be aware that, if there are inconsistencies between the information conveyed by a schemaRef element and that conveyed by schemaLocation attributes elsewhere in the instance, processors may have difficulty processing the instance correctly.

The XML Schema definition of the schemaRef element is shown below.

<schema targetNamespace="http://www.xbrl.org/2003/XLink"

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

  xmlns:xl="http://www.xbrl.org/2003/XLink"

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

  elementFormDefault="qualified"

  attributeFormDefault="unqualified">

 

  <complexType name="simpleType">

    <annotation>

      <documentation>

      Type for the simple links defined in XBRL

      </documentation>

    </annotation>

    <complexContent>

      <restriction base="anyType">

        <attributeGroup ref="xlink:simpleType"/>

        <attribute ref="xlink:href" use="required" />

        <attribute ref="xlink:arcrole" use="optional" />

        <attribute ref="xlink:role" use="optional" />

        <attribute ref="xlink:title" use="optional" />

        <attribute ref="xlink:show" use="optional" />

        <attribute ref="xlink:actuate" use="optional" />

        <anyAttribute namespace="http://www.w3.org/XML/1998/namespace"

          processContents="lax" />

      </restriction>

    </complexContent>

  </complexType>

 

</schema>

 

<schema targetNamespace="http://www.xbrl.org/2003/linkbase"

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

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

  xmlns:xl="http://www.xbrl.org/2003/XLink"

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

  elementFormDefault="qualified">

 

  <element name="schemaRef" type="xl:simpleType" substitutionGroup="xl:simple">

    <annotation>

      <documentation>

      Definition of the schemaRef element - used

      to link to XBRL taxonomy schemas from

      XBRL instances.

      </documentation>

    </annotation>

  </element>

 

</schema>

4.2.1       The xlink:type attribute on schemaRef elements

The xlink:type attribute MUST occur and MUST have the fixed content “simple”.

4.2.2       The xlink:href attribute on schemaRef elements

A schemaRef element MUST have an xlink:href attribute. The xlink:href attribute MUST be a URI. The URI MUST point to an XML Schema. If the URI reference is relative, its absolute version MUST be determined as specified in [XML Base] before use. For details on the allowable forms of XPointer [XPTR] syntax in the URI see section 3.5.4.

4.2.3       The xlink:arcrole attribute on schemaRef elements (optional)

The xlink:arcrole attribute MAY be used on the schemaRef element. It is given no semantics by this specification. The xlink:arcrole attribute value MUST be a URI value as defined by the [XLINK] specification.

4.2.4       The xlink:role attribute on schemaRef elements (optional)

The xlink:role attribute MAY be used on the schemaRef element. No semantics are defined for the xlink:role attribute when it occurs on the schemaRef element. The xlink:role attribute value MUST be a URI value as defined by the [XLINK] specification.

4.2.5       The xml:base attribute on schemaRef elements (optional)

The xml:base attribute [XML Base] MAY appear on schemaRef elements, participating in the resolution of relative URIs specified in their xlink:href attributes.

4.3        The linkbaseRef element in XBRL instances

The [XLINK] specification provides for a standard way of finding linkbases (See http://www.w3.org/TR/xlink/#xlg). The linkbaseRef element conforms to this standard by using a specific xlink:arcrole content value (See Section 4.3.3).

One or more linkbaseRef elements MAY occur as children of the xbrl element (They MAY also occur in taxonomy schemas. See Section 5.1.2 for details). If linkbaseRef elements occur as children of xbrl elements, they MUST follow the schemaRef elements and precede all other elements, in document order.

In an XBRL instance, the linkbaseRef element identifies a linkbase that becomes part of the DTS supporting that XBRL instance.

The XML Schema constraints applying to the linkbaseRef element are shown below.

<schema targetNamespace="http://www.xbrl.org/2003/linkbase"

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

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

  xmlns:xl="http://www.xbrl.org/2003/XLink"

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

  elementFormDefault="qualified">

 

  <element name="linkbaseRef" substitutionGroup="xl:simple">

    <annotation>

      <documentation>

      Definition of the linkbaseRef element - used

      to link to XBRL taxonomy extended links from

      taxonomy schema documents and from XBRL

      instances.

      </documentation>

    </annotation>

    <complexType>

      <complexContent>

        <restriction base="xl:simpleType">

          <attribute ref="xlink:arcrole" use="required">

            <annotation>

              <documentation>

              This attribute must have the value:

              http://www.w3.org/1999/xlink/properties/linkbase

              </documentation>

            </annotation>

          </attribute>

          <anyAttribute namespace="http://www.w3.org/XML/1998/namespace" processContents="lax" />

        </restriction>

      </complexContent>

    </complexType>

  </element>

 

</schema>

4.3.1       The xlink:type attribute on linkbaseRef elements

The xlink:type attribute MUST occur and MUST have the fixed content “simple”.

4.3.2       The xlink:href attribute on linkbaseRef elements

A linkbaseRef element MUST have an xlink:href attribute. The xlink:href attribute MUST be a URI. The URI MUST point to a linkbase (as defined in Section 3.5.2) that contains the appropriate extended links, as determined by the value of the xlink:role attribute. If the URI reference is relative, its absolute version MUST be determined as specified in [XML Base] before use. For details on the allowable forms of XPointer [XPTR] syntax in the URI see section 3.5.4.

4.3.3       The xlink:arcrole attribute on linkbaseRef elements

To indicate that the linkbaseRef element points to a linkbase, the xlink:arcrole attribute on the linkbaseRef element MUST have the [XLINK]- specified fixed content:

http://www.w3.org/1999/xlink/properties/linkbase

4.3.4       The xlink:role attribute on linkbaseRef elements (optional)

The optional xlink:role attribute constrains the kinds of extended links that are permitted within the linkbase identified by the linkbaseRef element. Table 2 sets out the standard xlink:role attribute values for the xlink:role attribute when it occurs on the linkbaseRef element. Table 2 also documents which kinds of extended links:

·          MUST be contained by the linkbase connected to by a linkbaseRef element with each of the standard xlink:role attribute values; and

·          MUST NOT be contained by the linkbase connected to by a linkbaseRef element with each of the standard xlink:role attribute values.

If a linkbaseRef element connects to a linkbase containing an extended link that has not been defined in this specification, then a non-standard value of the xlink:role attribute MAY be used or the xlink:role attribute MAY be omitted.

Table 2. Roles in the linkbaseRef element

Values of the linkbaseRef xlink:role attribute

Element pointed to by xlink:href

(unspecified)

MAY contain any extended link elements

http://www.xbrl.org/2003/role/calculationLinkbaseRef

MUST contain only calculationLink elements

http://www.xbrl.org/2003/role/definitionLinkbaseRef

MUST contain only definitionLink elements

http://www.xbrl.org/2003/role/labelLinkbaseRef

MUST contain only labelLink elements

http://www.xbrl.org/2003/role/presentationLinkbaseRef

MUST contain only presentationLink elements

http://www.xbrl.org/2003/role/referenceLinkbaseRef

MUST contain only referenceLink elements

4.3.5       The xml:base attribute on linkbaseRef elements (optional)

The xml:base attribute [XML Base] MAY appear on linkbaseRef elements, participating in the resolution of relative URIs specified in their xlink:href attributes.

4.4        The roleRef element in XBRL instances (optional)

One or more roleRef elements (defined in Section 3.5.2.4) MAY be used in XBRL instances. If used, they MUST appear immediately after the linkbaseRef elements in the XBRL instance, in document order. roleRef elements are used in XBRL instances to reference the definitions of any custom xlink:role attribute values used in footnote links in the XBRL instance.

4.5        The arcroleRef element in XBRL instances (optional)

One or more arcroleRef elements (defined in Section 3.5.2.5) MAY be used in XBRL instances. If used, they MUST appear immediately after the roleRef elements in the XBRL instance, in document order. arcroleRef elements are used in XBRL instances to reference the definitions of any custom xlink:arcrole attribute values used in footnote links in the XBRL instance.

4.6        Items

As discussed in Section 3 above, an item represents a single fact or business measurement. In the XML Schema for XBRL instances, item is defined as an abstract element. This means that it will never appear in its own right in an XBRL instance. Therefore, all elements representing single facts or business measurements defined in an XBRL taxonomy document and reported in an XBRL instance MUST be either (a) members of the substitution group item; or, (b) members of a substitution group originally based on item. XBRL taxonomies include taxonomy schemas that contain such element definitions. item elements might need to be referenced from elsewhere (such as from a footnote) therefore taxonomy authors SHOULD NOT prohibit the id attribute inherited from the base XBRL item type.

item elements MUST NOT be descendants of other item elements. Structural relationships necessary in an XBRL instance MUST be captured only using tuples (see Section 4.9). The intellectual structure – the relationship of financial concepts to each other in a variety of senses – is captured by the link structure of taxonomy linkbases rather than by nesting of facts in XBRL instances.

The XML Schema definition of the item element and the data types for elements in the item substitution group are given below.

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

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

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

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

  elementFormDefault="qualified">

 

  <attributeGroup name="numericItemAttrs">

    <annotation>

      <documentation>

      Group of attributes for numeric items

      </documentation>

    </annotation>

    <attribute name="contextRef" type="IDREF" use="required" />

    <attribute name="unitRef" type="IDREF" use="required" />

    <attribute name="precision" type="xbrli:precisionType" use="optional" />

    <attribute name="decimals" type="xbrli:decimalsType" use="optional" />

    <attribute name="id" type="ID" use="optional" />

  </attributeGroup>

 

  <attributeGroup name="nonNumericItemAttrs">

    <annotation>

      <documentation>

      Group of attributes for non-numeric items

      </documentation>

    </annotation>

    <attribute name="contextRef" type="IDREF" use="required" />

    <attribute name="id" type="ID" use="optional" />

  </attributeGroup>

 

  <annotation>

    <documentation>

    XBRL domain numeric item types - for use on concept element definitions

    The following 4 numeric types are all types that have been identified as

    having particular relevance to the domain space addressed by XBRL and are

    hence included in addition to the built-in types from XML Schema.

    </documentation>

  </annotation>

 

  <complexType name="monetaryItemType" final="extension">

    <simpleContent>

      <extension base="xbrli:monetary">

        <attributeGroup ref="xbrli:numericItemAttrs" />

        <anyAttribute namespace="##other" processContents="lax" />

      </extension>

    </simpleContent>

  </complexType>

 

  <complexType name="sharesItemType" final="extension">

    <simpleContent>

      <extension base="xbrli:shares">

        <attributeGroup ref="xbrli:numericItemAttrs" />

        <anyAttribute namespace="##other" processContents="lax" />

      </extension>

    </simpleContent>

  </complexType>

 

  <complexType name="pureItemType" final="extension">

    <simpleContent>

      <extension base="xbrli:pure">

        <attributeGroup ref="xbrli:numericItemAttrs" />

        <anyAttribute namespace="##other" processContents="lax" />

      </extension>

    </simpleContent>

  </complexType>

 

  <element name="numerator" type="decimal" />

  <element name="denominator" type="xbrli:nonZeroDecimal" />

  <complexType name="fractionItemType" final="extension">

    <sequence>

      <element ref="xbrli:numerator" />

      <element ref="xbrli:denominator" />

    </sequence>

    <attribute name="contextRef" type="IDREF" use="required" />

    <attribute name="unitRef" type="IDREF" use="required" />

    <attribute name="id" type="ID" use="optional" />

    <anyAttribute namespace="##other" processContents="lax" />

  </complexType>

 

  <complexType name="stringItemType" final="extension">

    <simpleContent>

      <extension base="string">

        <attributeGroup ref="xbrli:nonNumericItemAttrs" />

        <anyAttribute namespace="##other" processContents="lax" />

      </extension>

    </simpleContent>

  </complexType>

 

<!--

booleanItemType, hexBinaryItemType, base64BinaryItemType, anyURIItemType, , QNameItemType, durationItemType, dateTimeItemType, timeItemType, dateItemType, gYearMonthItemType, gYearItemType, gMonthDayItemType, gDayItemType, gMonthItemType, normalizedStringItemType, tokenItemType, languageItemType, NameItemType, ...

-->

 

  <element name="item" type="anyType" abstract="true">

    <annotation>

      <documentation>

      Abstract item element used as head of item substitution group

      </documentation>

    </annotation>

  </element>

 

</schema>

Example 9. A numeric fact with three significant digits

<ci:capitalLeases contextRef="c1" unitRef="u1" precision="3">727432</ci:capitalLeases>

Meaning: The value of Capital Leases in the numeric context labelled c1 is 727000 accurate to 3 significant figures. Note that it will be necessary to consult the context (defined below) in order to determine other details concerning the value such as entity, period, etc. and it will be necessary to consult the referenced unit element to determine the relevant unit information.

Example 10. A non-numeric item

<ci:concentrationsNote contextRef="c1">

Concentration of credit risk with regard to short term investments is not considered to be significant due to the Company's cash management policies. These policies restrict investments to low risk, highly liquid securities (that is, commercial paper, money market instruments, etc.), outline issuer credit requirements, and limit the amount that may be invested in any one issuer.

</ci:concentrationsNote>

Meaning: The text of the Concentrations note in the context labelled c1.

The content of the abstract item element is derived from anyType. Each member of the substitution group of item must have a defined XBRL item type. This allows each substitution for item in the instance to validate against its own data type. There is one defined XBRL item type derived from each of the appropriate built-in types of XML Schema, along with the fractionItemType type. The complete list is in Section 5.1.1.3. An item MUST NOT have complex content unless its item type is derived by restriction from fractionItemType.

The contextRef attribute is an IDREF to the context element (see Section 4.7) that holds additional relevant information about the fact represented. An item MUST contain a contextRef attribute that references a context element in the same XBRL instance. Note that an XBRL instance is an occurrence of the xbrl element, not the entire document. Items whose content is derived from an XML Schema built-in numeric type (decimal, float or double or a built-in type derived from one of them) or fractionItemType by restriction MUST use the contextRef attribute and the unitRef attribute; all others MUST use the contextRef attribute.

The unitRef attribute is an IDREF to the unit element (see Section 4.8) that holds information about units in which numeric facts have been measured. The unitRef attribute MUST NOT occur in non-numeric items. The unitRef attribute MUST occur in numeric items, referencing a unit element in the same XBRL instance.

Two optional attributes, precision and decimals, are available on numeric items (except those with type fractionItemType) to enable the XBRL instance creator to make statements about the accuracy of the facts represented. They are discussed in the following sections.

4.6.1       The contextRef attribute

All items MUST have a context.  All tuples MUST NOT have a context. Items identify their contexts using the contextRef attribute.  The contextRef attribute is used to identify the context element that is associated with the item on which the contextRef attribute occurs.

The value of the contextRef attribute MUST be equal to the value of an id attribute on a context element in the XBRL instance that contains the item on which the contextRef attribute occurs.

4.6.2       The unitRef attribute

All numeric items MUST have a statement of the units of measurement.  All tuples and all non-numeric items MUST NOT have a statement of the units of measurement. Numeric items identify their units using the unitRef attribute.  The unitRef attribute is used to identify the unit element that is associated with the item on which the unitRef attribute occurs.

The value of the unitRef attribute MUST be equal to the value of an id attribute on a unit element in the XBRL instance that contains the numeric item on which the unitRef attribute occurs.

4.6.3       Usage of precision and decimals attributes

A numeric item MUST have either a precision attribute or a decimals attribute unless it is of the fractionItemType or of a type that is derived by restriction from fractionItemType or has a nil value, in which case, it MUST NOT have either a precision attribute or a decimals attribute.

A numeric item MUST NOT have both a precision attribute and a decimals attribute.

A non-numeric item MUST NOT have either a precision or a decimals attribute.

When determining whether two numeric items are v-equal (a predicate that is used in the definition of various other equality type predicates) it is necessary to take into consideration the values of precision (or the precision inferred from the value of the decimals attribute) for the two numeric items. The formal definition of v-equal for two numeric items is given in Section 4.10.

4.6.4       The precision attribute (optional)

The precision attribute MUST be a non-negative integer or the string "INF" that conveys the arithmetic precision of a measurement, and, therefore, the utility of that measurement to further calculations. Different software packages may claim different levels of accuracy for the numbers they produce. The precision attribute allows any producer to state the precision of the output in the same way. If a numeric fact has a precision attribute that has the value “n” then it is correct to “n” significant figures (See Section 4.6.1 for the normative definition of ‘correct to “n” significant figures’). An application SHOULD ignore (i.e. replace with zeroes) any digits after the first “n” decimal digits, counting from the left, starting at the first non-zero digit in the lexical representation of any number for which the value of precision is specified or inferred to be n.

The meaning of precision="INF" is that the lexical representation of the number is the exact value of the fact being represented.

Example 11. Precision and lexical representation

Example

Meaning

precision="9"

Precision of nine digits. The first 9 digits, counting from the left, starting at the first non-zero digit in the lexical representation of the value of the numeric fact are known to be trustworthy for the purposes of computations to be performed using that numeric fact.

 

Precision

Example

Read as

Known to be GE

Known to be LT

INF

476.334

476.334

476.334

476.33400000000…1

3

205

205e0

204.5

205.5

4

2002000

2002e3

2001500

2002500

2

2012

20e2

1950

2050

2

2000

20e2

1950

2050

1

99

1e2

95

105

0

1234

1234

unknown

Unknown

The simple type precisionType has been provided to define the value space for the value of the precision attribute. Its definition is as follows:

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

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

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

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

  elementFormDefault="qualified">

 

  <simpleType name="precisionType">

    <annotation>

      <documentation>

      This type is used to specify the value of the

      precision attribute on numeric items. It consists

      of the union of nonNegativeInteger and "INF" (used

      to signify infinite precision or "exact value").

      </documentation>

    </annotation>

    <union memberTypes="nonNegativeInteger">

      <simpleType>

        <restriction base="string">

          <enumeration value="INF" />

        </restriction>

      </simpleType>

    </union>

  </simpleType>

 

</schema>

4.6.5       The decimals attribute (optional)

The decimals attribute MUST be an integer or the value "INF" that specifies the number of decimal places to which the value of the fact represented may be considered accurate, possibly as a result of rounding or truncation. If a numeric fact has a decimals attribute with the value “n” then it is known to be correct to “n” decimal places. (See section 4.6.7.2 for the normative definition of ‘correct to “n” decimal places’).

The meaning of decimals="INF" is that the lexical representation of the number is the exact value of the fact being represented.

Example 12. Decimals and lexical representation

Example

Meaning

decimals="2"

The value of the numeric fact is known to be correct to 2 decimal places.

decimals="-2"

The value of the numeric fact is known to be correct to –2 decimal places, i.e. all digits to the left  of the hundreds digit are accurate.

 

Decimals

Original

Read as

Known to be GE

Known to be LT

INF

436.749

436.749

436.749

436.74900000…1

2

10.00

10.00

9.995

10.005

2

10

10.00

9.995

10.005

2

10.000

10.00

9.995

10.005

2

10.009

10.01

10.005

10.015

0

10

10.

9.5

10.5

-1

10

10.

5

15

-1

11

10.

5

15

3

205

205.000

204.9995

205.0005

4

2002000

2002000.0000

2001999.99995

2002000.00005

-2

205

200.

150

250

-2

2002000

2002000.

2001950

2002050

-3

2002000

2002000.

2001500

2002500

-4

2002000

2000000.

1995000

2005000

-3

777000

777000

776500

777500

The simple type decimalsType defines the legal values for the decimals attribute. Its XML Schema definition is as follows:

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

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

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

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

  elementFormDefault="qualified">

 

  <simpleType name="decimalsType">

    <annotation>

      <documentation>

      This type is used to specify the value of the decimals attribute

      on numeric items. It consists of the union of integer and "INF"

      (used to signify that a number is expressed to an infinite number

      of decimal places or "exact value").

      </documentation>

    </annotation>

    <union memberTypes="integer ">

      <simpleType>

        <restriction base="string">

          <enumeration value="INF" />

        </restriction>

      </simpleType>

    </union>

  </simpleType>

 

</schema>

4.6.6       Inferring precision

The following rules enable XBRL instance consumers to infer a value for the precision attribute of a numeric item when none is supplied.

For a numeric item of type fractionItemType or type derived by restriction from fractionItemType, a consuming application MUST infer the precision to be equal to 'INF' if it is to be used in calculations.

If, on a numeric item, the decimals attribute is present rather than the precision attribute, then a consuming application MUST infer the precision of that numeric fact if it is to be used in calculations or searches for duplicates in XBRL instances.

Given the value of the decimals attribute, the precision of a numeric item is equal to n, where n is equal to the maximum of 0 and the result of the following calculation:

if there are non-zero digits to the left of the decimal point or implied decimal point if absent then the number of digits excluding any leading zeros to the left of the decimal point (or implied decimal point if absent) in the lexical representation of the numerical fact

otherwise if there are non-zero digits to the right of the decimal point, the negative of the number of zeros between the decimal point and the first non-zero digit in the lexical representation of the numerical fact

otherwise zero

plus

the value of the exponent in the lexical representation of the numerical fact (if present)

plus

the number of decimal places to which the numeric fact is known to be correct
.

Example 13. Lexical representation,  precision and decimals

Lexical Representation

Value of the decimals attribute

Inferred value of the precision attribute

123

2

3+2=5

123.4567

2

3+2=5

123e5

-3

3+5+(-3)=5

123.45e5

-3

3+5+(-3)=5

0.1e-2

5

0+(-2)+5=3

0.001E-2

5

(-2)+(-2)+5=1

0.001e-3 (this is a pathological case)

4

(-2)+(-3)+4=-1 which is less than 0 and hence 0

4.6.7       Definitions pertaining to accuracy

The following definitions are provided for clarity regarding accuracy-related features of this specification, i.e. precision and decimals attributes.

4.6.7.1     “Correct to n Significant Figures”, “Rounding” and “Truncation”

If a the lexical representation of the value of a number is said to be correct to n significant figures it means that the first “n” decimal digits, counting from the left, starting at the first non-zero digit in the lexical representation of the number are known to be accurate for the purposes of computations to be performed using that number. (Note: in the following it is assumed that all zeros to the left of the decimal point and to the left of the first non-zero digit in the decimal representation have been removed first).

More precisely: in the decimal representation of a number, a significant figure is any one of the digits 1, 2, 3...9 that specify the magnitude of a number. Zero (0) is a significant figure except when it appears to the left of all non-zero digits or is used solely to fill the places of unknown or discarded digits (after truncation or rounding - see later). Thus, in the number "0.00263", there are three significant figures: 2, 6, and 3. The zeroes are not significant. In the number "3809" all four of the digits are significant. In the number "46300" the digits 4, 6, and 3 are known to be significant but it is not possible to conclude anything concerning the two zeroes as they are written. This ambiguity can be removed by writing the number in terms of powers of ten. If there are three significant figures the representation becomes 4.63 × 104; if there are four significant figures it becomes 4.630 × 104, etc.

It is often necessary to round significant figures following a calculation. This is known as rounding. To round a number to n significant figures, discard all digits to the right of the nth place. This step is known as truncation. Then, if the left-most discarded digit is less than 5, leave the nth digit unchanged; if the left-most discarded digit is greater than or equal to 5, add 1 to the nth digit (propagating any carries to digits further to the left according to the normal rules of arithmetic and removing the final 0 if necessary). For example:

Example 14. Rounding

Original

Rounded to n significant figures

 

n=2

n=3

3.5643

3.6

3.56

3.5673

3.6

3.57

0.49787

0.50

0.498

3.9999

4.0

4.00

9.999991

10

10.0

22.55

23

22.6

0.0019

0.0019

0.00190

0.00002

0.000020

0.0000200

The same procedure MAY be followed for any value of n, and we then say that a particular lexical representation of the value of a number is correct to n significant figures.

4.6.7.2     “Correct to n Decimal Places”

If the representation of a number is correct to n decimal places then the absolute difference between the value of the number and its representation (known as the “absolute error” of the representation - eabs) is less than or equal to 0.5 x 10-n. n may be a positive or negative integer or zero.

Mathematically this may be expressed as follows:

For the number X, x is a representation of X correct to n decimal places if and only if

eabs = |X-x| £ 0.5 ´ 10-n

or, because of rounding conventions,

-0.5 ´ 10-n £ x-X < 0.5 ´ 10-n

Rounding, as described earlier, can be used to make a number correct to exactly n decimal places. The following table shows the representations of the number 123456.789012 correct to various numbers of decimal places:

Example 15. Correct to n decimal places

123456.789012 correct to n decimal places

n=-3

n=-2

n=0

n=3

n=6

123000

123500

123457

123456.789

123456.789012

4.7        The context element

The context element contains information about the entity being described, the reporting period and the reporting scenario, all of which are necessary for understanding a business fact captured as an XBRL item.

The context element MUST conform to the following XML Schema constraints:

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

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

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

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

  elementFormDefault="qualified">

 

  <element name="context">

    <annotation>

      <documentation>

      Used for an island of context to which facts can be related.

      </documentation>

    </annotation>

    <complexType>

      <sequence>

        <element name="entity" type="xbrli:contextEntityType" />

        <element name="period" type="xbrli:contextPeriodType" />

        <element name="scenario" type="xbrli:contextScenarioType" minOccurs="0" />

      </sequence>

      <attribute name="id" type="ID" use="required" />

    </complexType>

  </element>

 

</schema>

In the examples provided in the following sub-sections, the xsi:schemaLocation attribute does not contain URIs to resolve the ISO4217 and NASDAQ namespaces. In the case of NASDAQ the examples assume that the applications that produced and will consume this instance will be able to resolve this namespace reference without the help of the xsi:schemaLocation. The ISO4217 namespace does not refer to an XML Schema that can be used for validation of the XBRL instances shown in the examples. The ISO4217 and NASDAQ URIs do not reference actual resources of the ISO or NASDAQ.

4.7.1       The id attribute

Every context element MUST include the id attribute. The content of the id attribute MUST conform to the [XML] rules for attributes with the ID type (http://www.w3.org/TR/REC-xml#NT-TokenizedType). The id attribute identifies the context (see Section 4.7) so that it may be referenced by item elements.

Example 16. IDs                                            

Example

id="C2424"

 

Counterexample

id="42"

Content of the ID type must not begin with a number.

4.7.2       The period element

The period element contains the instant or interval of time for reference by an item element. The sub-elements of period are used to construct one of the allowed choices for representing date intervals.

Elements

Meaning

startDate, endDate

A period beginning and ending as specified.

instant

A point in time.

forever

An element to represent ‘forever’.

Each of the period sub-elements uses a standard XML Schema representation of a date.

The XML Schema constraints on the period element are shown below.

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

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

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

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

  elementFormDefault="qualified">

 

  <simpleType name="dateUnion">

    <annotation>

      <documentation>

      The union of the date and dateTime simple types.

      </documentation>

    </annotation>

    <union memberTypes="date dateTime " />

  </simpleType>

 

  <complexType name="contextPeriodType">

    <annotation>

      <documentation>

      The type for the period element, used to describe the reporting date info.

      </documentation>

    </annotation>

    <choice>

      <sequence>

        <element name="startDate" type="xbrli:dateUnion" />

        <element name="endDate" type="xbrli:dateUnion" />

      </sequence>

      <element name="instant" type="xbrli:dateUnion" />

      <element name="forever">

        <complexType />

      </element>

    </choice>

  </complexType>

 

</schema>

 

Sub-element

XML Schema data type

instant

date or dateTime.

forever

empty

startDate

date or dateTime

endDate

date or dateTime

While the content of the instant, startDate and endDate elements are defined to use the data representation defined by ISO 8601 (as restricted by [SCHEMA-2]), XBRL adds further restrictions and constraints.

For an item element with periodType="instant" (See Section 5.1.1.1), the period MUST contain an instant element.

For an item element with periodType="duration", the period MUST contain forever or a valid sequence of startDate and endDate.

A date, with no time part, in the content of an startDate element is defined to be equivalent to specifying a dateTime of the same date, and T00:00:00 (midnight at the start of the day).

A date, with no time part, in the endDate or instant element is defined to be equivalent to specifying a dateTime of the same date plus P1D and with a time part of T00:00:00. This represents midnight at the end of the day. The reason for defining it thus, i.e. as midnight at the start of the next day, is that [SCHEMA-2] mandates this representation by prohibiting the value of 24 in the "hours" part of a time specification, which is ISO 8601 syntax.

If supplied, the endDate MUST specify or imply a point in time that is later than the specified or implied point in time of the corresponding startDate.

4.7.3       The entity element

The entity element documents the entity (business, government department, individual, etc.) that fact describes. The entity element is required content of the context element. The entity element MUST contain an identifier element and MAY contain a segment element.

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

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

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

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

  elementFormDefault="qualified">

 

  <complexType name="contextEntityType">

    <annotation>

      <documentation>

      The type for the entity element, used to describe the reporting entity.

      Note that the scheme attribute is required and cannot be empty.

      </documentation>

    </annotation>

    <sequence>

      <element name="identifier">

        <complexType>

          <simpleContent>

            <extension base="token">

              <attribute name="scheme" use="required">

                <simpleType>

                  <restriction base="anyURI">

                    <minLength value="1" />

                  </restriction>

                </simpleType>

              </attribute>

            </extension>

          </simpleContent>

        </complexType>

      </element>

      <element ref="xbrli:segment" minOccurs="0" />

    </sequence>

  </complexType>

 

</schema>

4.7.3.1     identifier

An identifier element specifies a scheme for identifying business entities. The required scheme attribute contains the namespace URI of the identification scheme, providing a framework for referencing naming authorities. The element content MUST be a token that is a valid identifier within the namespace referenced by the scheme attribute. XBRL International is not a naming authority for business entities. XBRL makes no assumption about the ability of an application to resolve an identifier that may appear as element content in any particular scheme.

Example 17. Entity identifiers

Example

Meaning

<identifier scheme="http://www.nasdaq.com">SAMP</identifier>

The company with NASDAQ ticker symbol SAMP.

<identifier scheme="http://www.dnb.com">121064880</identifier>

The company or subsidiary with D‑U‑N‑Sâ number 121064880.

<identifier scheme="http://www.cusip.org">41009876AB</identifier>

The entity with CUSIP number 41009876AB (e.g. a mutual fund).

<identifier scheme="http://www.ietf.org/URI">www.w3c.org</identifier>

The non-profit organisation owning the URI www.w3c.org.

4.7.3.2     The segment element (optional)

The segment element is an optional container for additional mark-up that the preparer of an XBRL instance SHOULD use to identify the business segment more completely in cases where the entity identifier is insufficient. In general, the content of a segment will be specific to the purpose of the XBRL instance. Elements contained by the segment element MUST NOT be defined in the http://www.xbrl.org/2003/instance namespace. Also, they MUST NOT be in the substitution group for elements defined in the http://www.xbrl.org/2003/instance namespace. The segment element MUST NOT be empty.

The XML Schema restrictions on the segment element are shown below.

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

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

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

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

  elementFormDefault="qualified">

 

  <element name="segment">

    <complexType>

      <sequence>

        <any namespace="##other" processContents="lax"

          minOccurs="1" maxOccurs="unbounded" />

      </sequence>

    </complexType>

  </element>

 

</schema>

Example 18. Using the segment element

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

      xmlns:my="http://www.someCompany.com/segment">

<context id="c1">

  <entity>

    <!—required content -->

    <identifier scheme="http://www.dnb.com">121064880</identifier>

  <!-- optional content -->

    <segment>

      <my:stateProvince>MI</my:stateProvince>

    </segment>

  </entity>

  <period><instant>2002-12-01</instant></period>

</context>

</xbrl>

<!-- Company specific segment sub-element -->

<schema targetNamespace="http://www.someCompany.com/segment"  

        xmlns:my="http://www.someCompany.com/segment"

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

 

  <simpleType name="stateProvinceType">

    <restriction base="token">

      <enumeration value="MI"/>

      <enumeration value="ON"/>

    </restriction>

  </simpleType>

 

  <element name="stateProvince" type="my:stateProvinceType"/>

</schema>

Meaning: The preparer has used a <segment> to indicate that the business facts relate to operations in the state of Michigan. The company’s own XML Schema document defines the stateProvince element as including just Michigan and Ontario.

 

Creators of taxonomies should anticipate that XBRL instance creators will define elements to insert in the segment element to represent one or more dimensions of distinction such as:

·          Organisational structure, such as a the corporate headquarters and individual subsidiaries of an entity;

·          Regional decomposition, such as operations in Asia, Europe, and North America;

·          Functional distinctions, such as results from continuing and discontinued operations;

·          Product distinctions, such as operations relating to fishing, forestry and farming;

·          Operational distinctions such as recurring vs. non-recurring revenues or new subscriptions vs. renewals.

It is up to the preparer of the document to provide the proper namespace support and xsi:schemaLocation hints necessary to ensure that an XML Schema validation process properly validates the segment element.

4.7.4       The scenario element (optional)

Business facts can be reported as actual, budgeted, restated, pro forma, etc. For internal reporting purposes, there can be an even greater variety of additional metadata that preparers want to associate with items. The optional scenario element allows additional valid mark-up (see note above regarding segment) to be included for this purpose.

Elements contained by the scenario element MUST NOT be defined in the http://www.xbrl.org/2003/instance namespace. Also, they MUST NOT be in the substitution group for elements defined in the http://www.xbrl.org/2003/instance namespace. The scenario element MUST NOT be empty.

The XML Schema restrictions on the scenario element are shown below.

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

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

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

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

  elementFormDefault="qualified">

 

  <complexType name="contextScenarioType">

    <annotation>

      <documentation>

      Used for the scenario under which fact have been reported.

      </documentation>

    </annotation>

    <sequence>

      <any namespace="##other" processContents="lax"

        minOccurs="1" maxOccurs="unbounded" />

    </sequence>

  </complexType>

 

</schema>

Example 19. Use of the scenario element

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

      xmlns:fid="http://www.someInsuranceCo.com/scenarios"

      xmlns:other="http://www.example.com">

<context id="c1">

   <entity>

     <identifier scheme="http://www.example.com">someInsuranceCo</identifier>

   </entity>

   <scenario>

     <other:bestEstimate/>

     <fid:dwSlice>

       <fid:residence>MA</fid:residence>

       <fid:nonSmoker>true</fid:nonSmoker>

       <fid:minAge>34</fid:minAge>

       <fid:maxAge>49</fid:maxAge>

     </fid:dwSlice>

   </scenario>

</context>

</xbrl>

Meaning: The preparer has used a <scenario> to indicate that the reported values relate to a "best estimate" scenario for non-smokers residing in Massachusetts of the specified age group.

It is up to the preparer of the instance to provide the proper namespace support and xsi:schemaLocation hints necessary to ensure that the scenario element is properly validated by an XML Schema validation process.

The scenario and segment sub-elements have exactly the same structure, but are used for two different purposes. Segment is used to specify some component of the business entity. Scenario is used to document the circumstances surrounding the measurement of a set of facts, and like the segment element, its content will be application specific.

Creators of business reporting taxonomies should anticipate that XBRL instance creators will define elements to insert in the scenario element to represent dimensions of distinction such as:

·          Assuming certain valuations of assets or future revenue streams;

·          Actual, adjusted, estimated, forecasted, or reported as of a certain date;

·          Assuming a particular foreign currency exchange rate.

4.8        The unit element

The unit element specifies the units in which a numeric item has been measured. The content of the unit element MUST be either a simple unit of measure expressed with a single measure element or a ratio of products of units of measure, with the ratio represented by the divide element and the numerator and denominator products both represented by a sequence of measure elements.

Some examples of simple units of measure are EUR (Euros), meters, kilograms and FTE (Full Time Equivalents). Some examples of complex units of measures are Earnings per Share and Square Feet.

The XML Schema restrictions on the unit element are shown below.

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

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

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

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

  elementFormDefault="qualified">

 

  <annotation>

    <documentation>

    XML Schema components contributing to the unit element

    </documentation>

  </annotation>

 

  <element name="measure" type="QName" />

 

  <complexType name="measuresType">

    <annotation>

      <documentation>

      A collection of sibling measure elements

      </documentation>

    </annotation>

    <sequence>

      <element ref="xbrli:measure" minOccurs="1" maxOccurs="unbounded" />

    </sequence>

  </complexType>

 

  <element name="divide">

    <annotation>

      <documentation>

      Element used to represent division in units

      </documentation>

    </annotation>

    <complexType>

      <sequence>

        <element name="unitNumerator" type="xbrli:measuresType" />

        <element name="unitDenominator" type="xbrli:measuresType" />

      </sequence>

    </complexType>

  </element>

 

  <element name="unit">

    <annotation>

      <documentation>

      Element used to represent units information about numeric items

      </documentation>

    </annotation>

    <complexType>

      <choice>

        <element ref="xbrli:measure" minOccurs="1" maxOccurs="unbounded" />

        <element ref="xbrli:divide" />

      </choice>

      <attribute name="id" type="ID" use="required" />

    </complexType>

  </element>

 

</schema>

4.8.1       The id attribute

Every unit element MUST include an id attribute. The value of the id attribute MUST conform to the [XML] rules for attributes with the ID type (http://www.w3.org/TR/REC-xml#NT-TokenizedType). The id attribute identifies the unit (see Section 4.8) so that it may be referenced by item elements.

4.8.2       The measure element

The measure element is used to describe a basic unit of measure. The content of the measure element MUST be a QName comprised of a namespace prefix and a local part separated by a colon (“:”). The namespace prefix MUST resolve to a namespace that is in scope for the measure element. The local part MUST be an NCName.

Some facts have restrictions on the content of the unit element and the value of the measure element that is a consequence of the type of concept they represent. These restrictions are set out in the following table.

Table 3. Unit restrictions based on item types.

Item type

implies unit MUST contain

monetaryItemType or derived from monetaryItemType

A single measure element where The local part of the measure MUST be an ISO 4217 currency designation [ISO] that was valid during the time designated by the period element of the item’s context. The namespace prefix MUST resolve to: http://www.xbrl.org/2003/iso4217

sharesItemType or derived from sharesItemType

A single measure element. The local part of the measure MUST be "shares" and the namespace prefix that MUST resolve to http://www.xbrl.org/2003/instance

To represent rates, percentages or ratios where the numerator and the denominator would be the same units, the fact MUST have a unitRef attribute identifying a unit element with a single measure element as its only child. The local part of the measure MUST be "pure" and the namespace prefix MUST resolve to the namespace: "http://www.xbrl.org/2003/instance". Rates, percentages and ratios MUST be reported using decimal or scientific notation rather than in percentages where the value has been multiplied by 100.

A complex unit of measure can be expressed by showing the mathematical relationships between other units of measure using a sequence of sibling measure elements (which imply a multiplication of those measure elements) and a single divide element (which implies division of a numerator by a denominator).

A measure element with a namespace prefix that resolves to the "http://www.xbrl.org/2003/instance" namespace MUST have a local part of either "pure" or "shares". A measure element with a namespace prefix that resolves to the "http://www.xbrl.org/2003/iso4217" namespace MUST have a local part that is a valid ISO4217 currency code [ISO] that was valid during the time designated by the period element of the item’s context.

4.8.3       The divide element

The divide element MUST contain a unitNumerator element followed by a unitDenominator element.

4.8.4       The unitNumerator and unitDenominator elements

The unitNumerator element and the unitDenominator element must both contain one or more measure elements.

Units MUST be expressed in their simplest possible form. The divide element MUST not contain any measure elements in its unitNumerator that are s-equal to measure elements in its unitDenominator.

Some examples of the unit element are shown in the following example.

Example 20. Use of the unit element

Example

Meaning

<unit id="u1"><measure
xmlns:ISO4217="http://www.xbrl.org/2003/iso4217"

>ISO4217:GBP</measure></unit>

Currency, UK Pounds.

<unit id="u2"><measure
xmlns:ISO4217="http://www.xbrl.org/2003/iso4217"

>ISO4217:gbp</measure></unit>

Incorrect lower case currency designator.

<unit id="u1"><measure>xbrli:pure</measure></unit>

A pure number, such as % revenue change.

<unit id="u3">

    <measure>myuom:feet</measure>

    <measure>myuom:feet</measure>

</unit>

Square feet – feet multiplied by feet.

<unit id="u4"><measure>xbrli:shares</measure></unit>

A number of shares.

<unit id="u5"><measure>myuom:FTE</measure></unit>

A head count (number of Full Time Equivalents).

<unit id="u6">

    <divide>

       <unitNumerator>

         <measure>ISO4217:EUR</measure>

       </unitNumerator>

       <unitDenominator>

         <measure>xbrli:shares</measure>

       </unitDenominator>

    </divide>

</unit>

Earnings per share (EPS) measured in Euros per share.

<unit id="u6">

    <divide>

       <unitNumerator>

         <measure>ISO4217:EUR</measure>

       </unitNumerator>

       <unitDenominator>

         <measure>ISO4217:EUR</measure>

       </unitDenominator>

    </divide>

</unit>

Illegal because the same measure occurs in both the numerator and the denominator of the divide element.

The "ISO4217" namespace prefix used in these examples must resolve to "http://www.xbrl.org/2003/iso4217".

The "xbrli" namespace prefix used in these examples must resolve to "http://www.xbrl.org/2003/instance".

The "myuom" namespace prefix is not defined by the XBRL specification, but it must resolve to a namespace that is in scope for the measure element. This namespace may be a URL that identifies a resource that describes the units of measure that are contained by the namespace. Although there are no XBRL semantics on how to interpret this information, it may provide assistance to creators of XBRL instances. For example, if the myuom namespace prefix resolves to "http://www.mycomp.com/myuom" then this namespace could be a URL that contains an HTML document that lists the available units of measure.

Some complex units of measure MAY be expressed as a simple unit of measure. For example, square feet may be expressed as a complex unit of measure showing a multiplication of two basic measures of feet as shown in the following example. It is at the discretion of the XBRL instance creator to use a unit element that describes the unit of measure to the appropriate degree.

Example 21. Simple and complex unit of measure comparison

Simple Unit of Measure

Complex Unit of Measure

<unit id="u1">

    <measure>myuom:sqrft</measure>

</unit>

<unit id="u4">

    <measure>myuom:feet</measure>

    <measure>myuom:feet</measure>

</unit>

Note:  The namespace prefix myuom must resolve to a valid namespace. It should be understood that the measures in this example "sqrft", and "feet" are contained in this namespace.

4.9        Tuples

While most business facts can be independently understood, some facts are dependent on each other for proper understanding, especially if multiple occurrences of that fact are being reported. For example, in reporting the management of a company, each manager’s name has to be properly associated with the manager’s correct title. Such sets of facts (manager’s title/manager’s name) are called tuples.

Tuples have complex content and MAY contain both items and other tuples. Like the item element, the tuple element is abstract. The following rules apply to tuples and consequently to their declarations in taxonomy schemas:

·          All tuples MUST be members of the substitution group that has tuple as its head. Therefore, tuples MUST be declared globally, because only global elements can be in a substitution group.

·          tuple declarations in taxonomy schemas MUST NOT include a periodType or balance attribute (See Sections 5.1.1.1 and 5.1.1.2 respectively);

·          tuples might need to be referenced from elsewhere (such as from a footnote). Therefore, all tuple declarations in taxonomy schemas SHOULD (but are not required to) include a declaration of an optional local attribute with name id of type xsd:ID. Authors of extension taxonomies SHOULD NOT prohibit the id attribute, if one exists, when restricting tuple datatypes.

NOTE: If the taxonomy author fails to define or prohibits an id attribute for a tuple then that tuple will not be referenceable by shorthand xpointers.

·          Attribute uses [SCHEMA‑1] (see specifically http://www.w3.org/TR/xmlschema-1/#section-XML-Representation-of-Attribute-Use-Components) in tuple declarations MUST NOT reference attributes from any of the following namespaces: http://www.xbrl.org/2003/instance,   http://www.xbrl.org/2003/linkbase, http://www.xbrl.org/2003/XLink,   http://www.w3.org/1999/xlink..

·          Tuples MUST NOT have mixed content, or simple content. Therefore, all tuple definitions in taxonomy schemas MUST NOT permit mixed content or simple content.

·          In the declaration of any tuple in a taxonomy schema, declarations of descendant elements of that tuple MUST NOT contain any anonymous type definitions.

·          Children of a tuple in an instance MUST be elements that are in a substitution group that has either item or tuple as its head.

·          Considering the constraint on tuple content in instances (above), it is inappropriate for taxonomy authors to include non-concept elements in the content models of tuple declarations. Therefore, in the declaration of any tuple in a taxonomy schema, declarations of child elements of that tuple MUST be references to global element declarations that are in a substitution group that has either item or tuple as its head.

Note: From a schema perspective, this leaves open the possibility of illegal content in the instance via the use of wildcards (<xsd:any>); processors will signal such illegal content because of the preceding instance-level constraint.

 

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

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

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

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

  elementFormDefault="qualified">

 

  <element name="tuple" type="anyType" abstract="true">

    <annotation>

      <documentation>

      Abstract tuple element used as head of tuple substitution group

      </documentation>

    </annotation>

  </element>

 

</schema>

Example 22. Defining a tuple as a member of the substitutionGroup "tuple"

An abbreviated example taxonomy schema:

<schema targetNamespace="http://mycompany.com/xbrl/taxonomy"

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

        xmlns:s="http://mycompany.com/xbrl/taxonomy"

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

 

<element name="managementName" type="xbrli:tokenItemType" xbrli:periodType="instant"

         substitutionGroup="xbrli:item"/>

<element name="managementTitle" type="xbrli:tokenItemType" xbrli:periodType="instant"

         substitutionGroup="xbrli:item"/>

<element name="managementAge" type="xbrli:nonNegativeIntegerItemType"

         xbrli:periodType="instant" substitutionGroup="xbrli:item"/>

 

<element name="managementInformation" substitutionGroup="xbrli:tuple">

  <complexType>

    <complexContent>

      <restriction base="anyType">

        <sequence>

          <element ref="s:managementName"/>

          <element ref="s:managementTitle"/>

          <element ref="s:managementAge" minOccurs="0"/>

        </sequence>

      </restriction>

      <attribute name="id" type="ID" use="optional"/>

    </complexContent>

  </complexType>

</element>

</schema>

 

An XBRL instance of the taxonomy (context and unit elements and linkbaseRef elements not shown):

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

      xmlns:s="http://mycompany.com/xbrl/taxonomy">

 

  <s:managementInformation>

    <s:managementName contextRef="c1">Haywood Chenokitov</s:managementName>

    <s:managementTitle contextRef="c1">President</s:managementTitle>

    <s:managementAge precision="2" contextRef="n1" unitRef="u1">42</s:managementAge>

  </s:managementInformation>

  <s:managementInformation>

    <s:managementName contextRef="c1">Miriam Minderbender</s:managementName>

    <s:managementTitle contextRef="c1">CEO</s:managementTitle>

  </s:managementInformation>

 

</xbrl>

The all, sequence and choice elements MAY appear in tuples. For example, consider information that is disclosed in tax filings regarding real estate and other properties:

Example 23. Elements describing business properties held and disposed

Label

Element Name

Balance

Substitution Group

Property

property

 

tuple

Property description

description

 

item

Date property acquired

dateAcquired

 

item

Date property disposed of

dateDisposedOf

 

item

Property fair market value

fairMarketValue

 

item

Although the description and date acquired are relevant for any property, the property either has a fair market value or has already been disposed of, but not both.

Example 24. Hierarchy in a tuple

Example: tuples associate concepts that cannot be understood independently and repeat within an XBRL instance. Multiple occurrences of a tuple within an XBRL instance are distinguished by having different content and contexts.

 

The content models for tuples can be defined using only XML Schema. Content models for tuples are not defined or modified by any of the XBRL linkbases.

4.10    Equality predicates relevant to detecting duplicate items and tuples

There are several different senses of “equal” that are relevant to detection of duplicates in XBRL instances: Identical, Structure equal (s-equal), Parent equal (p-equal), Value equal (v-equal), [XPATH]-equal (x-equal), Context equal (c-equal) and Unit equal (u-equal). These different equality predicates are polymorphic and formally defined in a recursive fashion. They are all symmetric predicates, i.e. the result of X (predicate) Y = the result of Y (predicate) X.

Table 4. Equality predicate definitions.

Argument Types

Predicates

Definition

node

identical

Exactly the same XML node.

sequence

s‑equal, v‑equal, c‑equal, u‑equal

Every node in one sequence is {s-equal, v‑equal, c‑equal, u‑equal} to the node in the same position in the other sequence.

set

identical, s‑equal, v‑equal, c‑equal, u‑equal

Set X is {identical, s-equal, v-equal, c-equal, u-equal} to set Y if:

 

every node in set X can be paired with a node in set Y to which it is {identical, s-equal, v-equal, c-equal, u-equal} and the two sets have the same number of members.

any XML object

x-equal

An XML object A is x-equal to an XML object B if the [XPATH] expression A = B returns the value true (see http://www.w3.org/TR/xpath.html#booleans)

text

s‑equal

The two text strings are x-equal

attribute

s‑equal

The two attributes have local names and namespaces that are s-equal and have values that are x-equal

Element (except those handled separately in this list)

s‑equal

Not identical, and

their element local names and namespaces are both s‑equal, and

the set of their attributes are s‑equal, and

the sequence of text and sub-element contents are s‑equal.

entity

s‑equal

identifier elements are s‑equal, and

segment elements are s‑equal (with any missing segment treated as s‑equal to an empty segment element).

startDate

s-equal

The implied date/time is equal, according to the rules set out in Section 4.7.2

endDate

s-equal

The implied date/time is equal, according to the rules set out in Section 4.7.2

instant

s-equal

The implied date/time is equal, according to the rules set out in Section 4.7.2

period

s‑equal

One of the following conditions applies:

1.      both elements have a child forever element, or

2.      their child instant elements are s‑equal, or

3.      their child startDate elements are s‑equal and their child endDate elements are s‑equal

unit

s-equal

The child divide or set of measure elements are s-equal.

divide

s-equal

The unitNumerator and unitDenominator elements are both s-equal

unitNumerator

s-equal

The sets of child measure elements are s-equal

unitDenominator

s-equal

The sets of child measure elements are s-equal

measure

s-equal

The namespace prefix in the content of the two measure elements resolves to the same namespace and the local names in the content of the two measure elements are s-equal.

context

s‑equal

period elements are s-equal, and

entity elements are s-equal, and

scenario elements are s‑equal.

item

s‑equal

they are c-equal, and

they are u-equal, and

precision attributes are s‑equal, and

decimals attributes are s‑equal, and

the text of their contents is s‑equal after converting any values of numeric items to a decimal representation.

tuple

s‑equal

The sets of (item and tuple) children are s‑equal.

usedOn

s-equal

The namespace prefix in the content of the two usedOn elements resolves to the same namespace and the local names in the content of the two usedOn elements are s-equal.

item

p‑equal

Nodes are children of the identical parent.

tuple

p‑equal

Nodes are children of the identical parent.

item

c‑equal

their contextRef attributes identify contexts that are identical or s‑equal

Any pair of numeric items

u-equal

numeric items X and Y are u-equal if and only if all the following conditions apply:

i.                     the set of descendant unitNumerator elements of UX is s-equal to the set of descendant unitNumerator elements of UY, and

ii.                   the set of descendant unitDenominator elements of UX is s-equal to the set of descendant unitDenominator elements of UY, and

iii.                  the set of child measure elements of of UX is s-equal to the set of child measure elements of UY,

where UX is the unit element referenced by the unitRef attribute of X and UY is the unit element referenced by the unitRef attribute of Y

 

NOTE: if UX is identical to UY then the above tests will always return the result true

 

Any pair of non-numeric items

u-equal

true

One numeric item and one non-numeric item

u-equal

false

numeric items not of type fractionItemType or a type derived from fractionItemType by restriction

v‑equal

A and B are v-equal if and only if all the following conditions apply:

i.                     A and B are c-equal and u-equal

ii.                   the numeric values AN and BN are x-equal where AN is obtained by rounding the content of A to N significant figures and BN is obtained by rounding the content of B to N significant figures where N is the lower of:

a.      the specified or inferred precision for A and

b.      the specified or inferred precision for B

 

numeric items of type fractionItemType or a type derived from fractionItemType by restriction

v‑equal

A and B are v-equal if and only if all the following conditions apply:

i.                     A and B are c-equal and u-equal

ii.                   AN is x-equal to BN and AD is x-equal to BD where:

a.      AN is the numerator and AD is the denominator of the normal form (defined below) of A and

b.      BN is the numerator and BD is the denominator of the normal form of B.

 

For any item F of type fractionItemType or a type derived from fractionItemType by restriction, the normal form has numerator FN and denominator FD such that FN and FD are integers and have no integer common factor and there exists a number H such that multiplying FN by H gives the numerator of F and multiplying FD by H gives the denominator of F.

 

numeric items, one of which is of type fractionItemType or a type derived from fractionItemType by restriction and the other of which is not

v‑equal

v-equal is always false for such combinations of numeric items

non-numeric item

v‑equal

A and B are v-equal if and only if all the following conditions apply

i.                     A and B are c-equal

ii.                   [XPATH] normalize-space(AC) = normalize-space(BC) where AC is the content of A and BC is the content of B.

 

item

duplicate

Item X and item Y are duplicates if and only if all the following conditions apply:

 

i.                     X is not identical to Y, and

ii.                   the element local name of X is s-equal to the element local name of Y, and

iii.                  X and Y are defined in the same namespace, and

iv.                 X is p-equal to Y, and

v.                   X is c-equal to Y , and

vi.                 X is u-equal to Y.

 

tuple

duplicate

Tuple X and tuple Y are duplicates if and only if all the following conditions apply:

 

i.                     X is not identical to Y, and

ii.                   the element local name of X is s-equal to the element local name of Y, and

iii.                  X and Y are defined in the same namespace and

iv.                 X is p-equal to Y, and

v.                   every node A in the set of child tuples of X can be paired with one node B in the set of child tuples of Y such that A and B satisfy all the requirements for being duplicate tuples except for being p-equal, and

vi.                 X has the same number of child tuples as Y, and

vii.                every node A in the set of child items of X can be paired with one node B in the set of child items of Y such that A is v-equal to B, and A and B satisfy all the requirements for being duplicate items except for being p-equal, and

viii.              X has the same number of child items as Y

 

The following extended example illustrates positive and negative examples of each of the above predicates

Example 25. Duplicate items, tuples and contexts

 

element

An XBRL instance containing two contexts that are s-equal and doubly nested tuples. Several of the elements are named in the left column.

 

 

 

 

 

a analysis

b customer

b name

b gross

b returns

 

 

 

c customer

c name

c gross

 

 

 

 

d customer

 

 

d returns

 

 

 

e customer

f name

g name

 

 

 

 

 

h totalGross

 

 

 

 

 

np3

 

 

 

 

 

 

 

 

u3

Xnnp3X

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

      xmlns:s="http://mycompany.com/xbrl/taxonomy"

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

      xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">

 

<s:analysis>

  <s:customer>

    <s:name contextRef="np3">Acme</s:name>

    <s:gross unitRef="u3" contextRef="np3" precision="4">3001</s:gross>

    <s:returns unitRef="u3" contextRef="np3"
               precision="3">100</s:returns>

    <s:net unitRef="u3" contextRef="np3" precision="4">2900</s:net>

  </s:customer>

  <s:customer>

    <s:name contextRef="Xnnp3X">Acme</s:name>

    <s:gross unitRef="u3" contextRef="np3" precision="3">3000</s:gross>

    <s:returns unitRef="u3" contextRef="np3"
               precision="3">100</s:returns>

    <s:net unitRef="u3" contextRef="np3" precision="4">2900</s:net>

  </s:customer>

  <s:customer>

    <s:name contextRef="np3">Acme</s:name>

    <s:gross unitRef="u3" contextRef="np3" precision="4">3000</s:gross>

    <s:returns unitRef="u3" contextRef="np3" precision="3">500</s:returns>

    <s:net unitRef="u3" contextRef="np3" precision="4">2500</s:net>

  </s:customer>

  <s:customer>

    <s:name contextRef="np3">Bree</s:name>

    <s:name contextRef="Xnnp3X">Bree</s:name>

    <s:gross unitRef="u3" contextRef="np3" precision="4">3000</s:gross>

    <s:returns unitRef="u3" contextRef="np3"
               precision="3">200</s:returns>

    <s:net unitRef="u3" contextRef="np3" precision="4">2800</s:net>

  </s:customer>

 <s:totalGross unitRef="u3" contextRef="np3"
               precision="3">12000</s:totalGross>

</s:analysis>

 

 

<!-- One Redundant Context Xnnp3X = period,2003 -->

<context id="np3">

  <entity>

    <identifier scheme="http://www.nasdaq.com">SAMP</identifier>

  </entity>

<period>

  <startDate>2003-01-01</startDate>

    <endDate>2003-12-31</endDate>

  </period>

</context>

<unit id="u3"><measure>ISO4217:USD</measure></unit>

<context id="Xnnp3X">

  <entity>

    <identifier scheme="http://www.nasdaq.com">SAMP</identifier>

  </entity>

  <period>

    <startDate>2003-01-01</startDate>

    <endDate>2003-12-31</endDate>

  </period>

</context>

</xbrl>

Note that, notwithstanding the lack of a calculation linkbase in this example, the total of 12000 in “h totalGross” is the most precise value that can be derived from sum of the values of gross for the 4 customers (3001+3000+3000+3000=12001 but the most precise value can be correct to only 3 significant figures because c gross has precision="3" and is hence 12000)

Example 26. Predicates for detecting duplicates

Node 1

Node 2

Type

Predicate

True

Reason

np3

Xnnp3X

context

Identical

no

different nodes

np3

Xnnp3X

context

s‑equal

yes

entity and period are s-equal

 

 

 

 

 

 

f name

g name

item

s‑equal

yes

different context ids np3 and Xnnp3X which are nevertheless s-equal

f name

g name

item

p-equal

yes

same parent element

f name

g name

item

c-equal

yes

equal contexts np3 and Xnnp3X

f name

g name

item

v-equal

yes

equal content “Bree

f name

g name

item

duplicates

yes

p‑equal and c‑equal

 

 

 

 

 

 

b name

c name

item

s‑equal

yes

different context ids np3 and Xnnp3X which are nevertheless s-equal

b name

c name

item

p-equal

no

they are in different customer tuples

b name

c name

item

c-equal

yes

equal contexts np3 and Xnnp3X

b name

c name

item

v-equal

yes

they both have content “Acme”

b name

c name

item

duplicates

no

not p-equal, so v‑equal doesn’t matter

 

 

 

 

 

 

b gross

c gross

item

s‑equal

no

 

b gross

c gross

item

p-equal

no

different parents

b gross

c gross

item

c-equal

yes

they both have context np3 and unit u3

b gross

c gross

item

v-equal

yes

“3001” with precision 3 equals “3000”

b gross

c gross

item

duplicates

no

not p-equal, so v‑equal doesn’t matter

 

 

 

 

 

 

b customer

c customer

tuple

s‑equal

no

different context ids np3 and Xnnp3X

b customer

c customer

tuple

p-equal

yes

same parent “a analysis

b customer

c customer

tuple

c-equal

n/a

c‑equal doesn’t apply to tuples

b customer

c customer

tuple

v-equal

n/a

v‑equal doesn’t apply to tuples

b customer

c customer

tuple

duplicates

yes

p‑equal, and

child items name, gross, returns and net are all v‑equal

 

 

 

 

 

 

b returns

d returns

item

s‑equal

no

different values

b returns

d returns

item

p-equal

no

parents are b customer and d customer

b returns

d returns

item

c-equal

yes

both have context np3 and unit u3

b returns

d returns

item

v-equal

no

b value is 100, d value is 500

b returns

d returns

item

duplicates

no

not p‑equal, so v‑equal doesn’t matter

 

 

 

 

 

 

b customer

d customer

tuple

s‑equal

no

different values of returns and net

b customer

d customer

tuple

p-equal

yes

same parent “a analysis

b customer

d customer

tuple

c-equal

n/a

c‑equal doesn’t apply to tuples

b customer

d customer

tuple

v-equal

n/a

v‑equal doesn’t apply to tuples

b customer

d customer

tuple

duplicates

no

p-equal, and

child items b name and b gross are v‑equal to d name and d gross, and

child items b returns and b net are not v‑equal to b returns and b net.

The equality predicates in the definition of duplicate items are ones of equal location, not equal content. In addition, it should be noted that attributes other than contextRef, unitRef, precision and decimals MUST be ignored for the purposes of this comparison (a consequence of the definition of s-equality for items). For example, additional id attributes do not distinguish otherwise equal items. Whether items appear within a tuple or not also impacts on whether they are duplicates, because the definition of duplicate items also carries the proviso that they have the same parent (i.e. are p-equal).

When determining whether two numeric items are v-equal (a predicate that is used in the definition of various other equality type predicates) it is necessary to take into consideration the values of precision for the two numeric items. If precision has not been specified for either of the two numeric items it is necessary to infer a value for it according to the rules in Section 4.6.6.

The XBRL definition of duplicate items and tuples encompasses many, but not all, inconsistent and redundant data items in an XBRL instance. Tuples that are not duplicates according to the XBRL definition might still have semantic inconsistencies. In the example above, customer elements “c” and “d” appear to contain data about the same customer, in the same context, but have inconsistent data; XBRL does not detect these as duplicate tuples even though to a human reader an element such as name indicates a “unique key” that is sufficient to determine that these two tuples are, in effect, c-equal (same context, different content).

4.11    Footnotes

While tuples deal with certain regularly-structured associations between elements that might appear in an XBRL instance, many documents include irregularly structured associations between facts. For instance, several facts may all be linked to the sentence “Including the effects of the merger with Example.com.” To express these irregular linkages, XBRL uses the footnoteLink element to describe these irregularly structured associations between facts in an XBRL instance.

4.11.1  The footnoteLink element

The footnoteLink element is an extended link. Its generic syntax is documented in Section 3.5.3. It contains locators, resources and arcs that describe irregular relationships between facts in an XBRL instance.

The XML Schema constraints on the footnoteLink element are shown below.

<schema targetNamespace="http://www.xbrl.org/2003/linkbase"

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

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

  xmlns:xl="http://www.xbrl.org/2003/XLink"

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

  elementFormDefault="qualified">

 

  <element name="footnoteLink" substitutionGroup="xl:extended">

    <annotation>

      <documentation>

      footnote extended link element definition

      </documentation>

    </annotation>

    <complexType>

      <complexContent>

        <restriction base="xl:extendedType">

          <choice minOccurs="0" maxOccurs="unbounded">

            <element ref="xl:title"/>

            <element ref="link:documentation"/>

            <element ref="link:loc"/>

            <element ref="link:footnoteArc"/>

            <element ref="link:footnote"/>

          </choice>

          <anyAttribute namespace="http://www.w3.org/XML/1998/namespace" processContents="lax" />

        </restriction>

      </complexContent>

    </complexType>

  </element>

 

</schema>

 

Example 27. A footnote in an XBRL instance

<?xml version="1.0"?>

<xbrl

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

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

xmlns:fr="http://www.xbrl-fr.org/xbrl/2003-02-29"

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

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

xmlns:ISO4217="http://www.xbrl.org2003/2003/iso4217"

xsi:schemaLocation="http://www.xbrl-fr.org/xbrl/2003-02-29 fr.xsd">

 

  <fr:propertyPlantEquipmentGross precision="4" unitRef="u1" contextRef="c1">1200</fr:propertyPlantEquipmentGross>

  <fr:assetsTotal id="f1" precision="4" unitRef="u1" contextRef="c1">2600</fr:assetsTotal>

  <fr:equityTotal id="f3" precision="4" unitRef="u1" contextRef="c1">1100</fr:equityTotal>

  <fr:liabilitiesTotal id="f2" precision="4" unitRef="u1" contextRef="c1">2600</fr:liabilitiesTotal>

 

<link:footnoteLink

  xlink:type="extended" xlink:title="1"
    xlink:role="http://www.xbrl.org/2003/role/link">

    <link:footnote

      xlink:type="resource"

      xlink:label="footnote1"

      xlink:role="http://www.xbrl.org/2003/role/footnote"

      xml:lang="en">Including the effects of the merger.</link:footnote>

    <link:footnote

      xlink:type="resource"

      xlink:label="footnote1"

      xlink:role="http://www.xbrl.org/2003/role/footnote"

      xml:lang="fr">Y compris les effets de la fusion.</link:footnote>

    <link:loc xlink:type="locator" xlink:label="fact1" xlink:href="#f1"/>

    <link:loc xlink:type="locator" xlink:label="fact1" xlink:href="#f2"/>

    <link:loc xlink:type="locator" xlink:label="fact1" xlink:href="#f3"/>

    <link:footnoteArc

     xlink:type="arc"

     xlink:from="fact1" xlink:to="footnote1"

     xlink:title="view explanatory footnote"

     xlink:arcrole="http://www.xbrl.org/2003/arcrole/fact-footnote"/>

  </link:footnoteLink>

  <context id="c1">

    <entity>

      <identifier scheme="http://www.un.org/">Example plc</identifier>

    </entity>

    <period>

      <instant>2001-08-16</instant>

    </period>

    <scenario name="Actual values">

      <fr:scenarioType>actual</fr:scenarioType>

    </scenario>

  </context>

  <unit id="u1"><measure>ISO4217:EUR</measure></unit>

</xbrl>

Meaning:  The one footnoteArc connects three facts to two footnotes. The two footnotes are in different languages. The xlink:title attribute has been used on the footnoteArc element to document the nature of the resource being made accessible from the facts.

4.11.1.1 Locators in footnoteLink elements

footnoteLink elements MUST NOT contain locators that are not loc elements. loc elements are documented in detail in Section 3.5.3.7. The loc element, when used in a footnoteLink, MUST only point to items or tuples in the same XBRL instance that contains the loc element itself.

4.11.1.2 The footnote element

The footnote element is the only resource allowed in footnoteLink elements. Generic resources are documented in detail in Section 3.5.3.8. The content of footnote resources is restricted relative to generic resources. Specifically, footnote resources MAY have mixed content containing a simple string, or a fragment of XHTML or a mixture of both.

One standard role is defined for footnote elements. Its value is:

http://www.xbrl.org/2003/role/footnote

The XML Schema constraints on the footnote element are shown below.

<schema targetNamespace="http://www.xbrl.org/2003/linkbase"

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

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

  xmlns:xl="http://www.xbrl.org/2003/XLink"

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

  elementFormDefault="qualified">

 

  <element name="footnote" substitutionGroup="xl:resource">

    <annotation>

      <documentation>

      Definition of the reference  resource element

      </documentation>

    </annotation>

    <complexType mixed="true">

      <complexContent mixed="true">

        <extension base="xl:resourceType">

          <sequence>

            <any namespace="http://www.w3.org/1999/xhtml"

              processContents="skip" minOccurs="0" maxOccurs="unbounded"/>

          </sequence>

          <anyAttribute namespace="http://www.w3.org/XML/1998/namespace"

            processContents="lax" />

        </extension>

      </complexContent>

    </complexType>

  </element>

</schema>

4.11.1.2.1  The xml:lang attribute on footnote elements

All footnote resources MUST have an xml:lang attribute identifying the language used for the content of the footnote. The value of the xml:lang attribute MUST conform to [XML] rules. (See http://www.w3.org/TR/2000/REC-xml-20001006#sec-lang-tag for details).

4.11.1.3 The footnoteArc element

The footnoteArc element has the same syntax as generic extended link arcs. See Section 3.5.3.9 for details.

The XML Schema constraints on the footnoteArc element are shown below.

<schema targetNamespace="http://www.xbrl.org/2003/linkbase"

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

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

  xmlns:xl="http://www.xbrl.org/2003/XLink"

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

  elementFormDefault="qualified">

 

  <element name="footnoteArc" type="xl:arcType" substitutionGroup="xl:arc">

    <annotation>

      <documentation>

      Concrete arc for use in footnote extended links.

      </documentation>

    </annotation>

  </element>

 

</schema>

4.11.1.3.1  xlink:arcrole attributes on footnoteArc elements

The value of the xlink:arcrole attribute MUST be a URI that indicates the meaning of the arc.

One standard arc role value has been defined for arc role values on footnoteArc elements. Its value is:

http://www.xbrl.org/2003/arcrole/fact-footnote

This arc role value is for use on a footnoteArc from item or tuple locators to footnote resources and it indicates that the footnote conveys human-readable information about the fact or facts.

4.11.1.3.2  xlink:title attribute on footnoteArc elements (optional)

The xlink:title attribute MAY be used to convey information about the relationship between facts and related footnotes to users navigating between those facts and footnotes. The content of the xlink:title attribute MUST be a string. The xlink:title attribute content MAY be made visible to users of [XLINK]-enabled applications.

If the xlink:title attribute is insufficient for this purpose (for example, if the information needs to be provided in several languages), then titles, as defined in Section 3.5.3.9.6, MAY be used.

5         XBRL Taxonomies

Section 3.1 provides an overview of XBRL taxonomies.

A taxonomy is defined as an XML Schema [SCHEMA‑1] and the set of directly referenced extended links (via the linkbaseRef element; see Section 5.1.2) and any extended links that are nested within the XML Schema. The XML Schemas in taxonomies are referred to, in this specification, as “taxonomy schemas”.

5.1        Taxonomy schemas

A taxonomy MUST include a taxonomy schema. A taxonomy schema MUST be a valid instance of an XML Schema.

If extended links are included in a taxonomy, the taxonomy schema MUST contain linkbaseRef elements that point to their linkbases (See Section 5.1.2) or the extended links MUST be nested in linkbases contained in the taxonomy schema itself.

The XBRL instance schema defines the abstract elements item and tuple. As a consequence of this and of [SCHEMA‑1] (in particular http://www.w3.org/TR/xmlschema-1/#src-resolve) it is necessary for taxonomy schemas to import the XBRL instance schema xbrl-instance-2003-12-31.xsd  if they define concepts (elements in the item or tuple substitution groups). However, taxonomy schemas do not need to import the XBRL instance schema (for example, if their only purpose is to define syntax for segments and scenarios in contexts).

Taxonomy schemas SHOULD specify a target namespace.  If a target namespace attribute is so specified, its value MUST NOT be empty

It will be necessary to include namespace declarations for several other schemas when creating taxonomy schemas, such as the namespace for XML Schema itself.

Example 28. A skeletal taxonomy schema showing linkbase references

<schema

targetNamespace="http://www.mycompany.com/taxonomy/2003-10-19"

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

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

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

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

xmlns:ci="http://www.mycompany.com/taxonomy/2003-10-19"

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

  <annotation>

    <appinfo>

      <link:linkbaseRef

        xlink:type="simple"

        xlink:href="linkbase_presentation.xml"

        xlink:role="http://www.xbrl.org/2003/role/presentationLinkbaseRef"

        xlink:arcrole="http://www.w3.org/1999/xlink/properties/linkbase"/>

      <link:linkbaseRef

        xlink:type="simple"

        xlink:href="linkbase_calculation.xml"

        xlink:role="http://www.xbrl.org/2003/role/calculationLinkbaseRef"

        xlink:arcrole="http://www.w3.org/1999/xlink/properties/linkbase"/>

      <link:linkbaseRef

        xlink:type="simple"

        xlink:href="linkbase_definition.xml"

        xlink:role="http://www.xbrl.org/2003/role/definitionLinkbaseRef"

        xlink:arcrole="http://www.w3.org/1999/xlink/properties/linkbase"/>

      <link:linkbaseRef

        xlink:type="simple"

        xlink:href="linkbase_label.xml"

        xlink:role="http://www.xbrl.org/2003/role/labelLinkbaseRef"

        xlink:arcrole="http://www.w3.org/1999/xlink/properties/linkbase"/>

      <link:linkbaseRef

        xlink:type="simple"

        xlink:href="linkbase_reference.xml"

        xlink:role="http://www.xbrl.org/2003/role/referenceLinkbaseRef"

        xlink:arcrole="http://www.w3.org/1999/xlink/properties/linkbase"/>

    </appinfo>

  </annotation>

<import

  namespace="http://www.xbrl.org/2003/instance"

  schemaLocation="xbrl-instance.xsd"/>

</schema>

XBRL taxonomies MAY be constructed to refer to other taxonomies; this extensibility of taxonomies is a critical feature of XBRL. In order to realise the complete potential of the technology, taxonomies must be extensible to accommodate virtually any business entity’s unique reporting requirements while maintaining significant comparability across entities.

XBRL taxonomy schemas MAY import other taxonomy schemas and reference additional XBRL linkbases as appropriate to achieve this extensibility.

Taxonomy schemas MAY also define custom role values and custom arc role values for use in linkbases. See Section 5.1.2 and 5.1.4 for details.

5.1.1       Concept definitions

Concepts are defined in taxonomy schemas. Each concept defined in a taxonomy schema is uniquely identified by an element’s syntax definition in the taxonomy schema. To correspond to a concept definition, an XML Schema element definition has to specify the element’s name, a substitution group, and type. All element names MUST be unique within a given taxonomy schema. The element MUST be a member of the substitution group that has either the XBRL item element or the XBRL tuple element as its head. The element MAY also include any of the other XML Schema attributes that can be used on an element’s syntax definition, including abstract and nillable.

An element defining the syntax for a concept SHOULD also have an id attribute. Providing an id attribute simplifies the content of the xlink:href attribute on linkbase loc elements (See Section 3.5.1.2). Note that some XML Schema validators require uniqueness of all id attribute values in a taxonomy schema and in all XML schemas that it imports or includes, directly or indirectly. To increase robustness to such interpretations of the XML Schema specification [SCHEMA-2], care SHOULD be taken to limit the extent to which id attributes values are likely to clash with id attribute values in related schemas. In the example below, this has been done by prefixing the element name with an additional string, “ci_”.

Example 29. Typical element definitions in a taxonomy schema

<schema

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

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

<element

  id="ci_preferredDividends"

  name="preferredDividends"

  xbrli:periodType="duration"

    type="xbrli:monetaryItemType"

    substitutionGroup="xbrli:item" nillable="true"/>

<element

  id="ci_stockBasedCompensationPolicy"

  name="stockBasedCompensationPolicy"

  xbrli:periodType="duration"

    type="xbrli:stringItemType"

    substitutionGroup="xbrli:item" nillable="true"/>

</schema>

Meaning:  Two concepts have been defined, one associated with the preferredDividends element and the other associated with the stockBasedCompensationPolicy element. Both concepts can be represented by nil-value items in XBRL instances. The preferredDividends concept is required to appear in XBRL instances as a numeric item with a duration period in its context and the stockBasedCompensationPolicy concept is to appear in XBRL instances as a non-numeric item with an instant period in its context.

XBRL also defines two attributes, periodType and balance, that MAY be used on the element syntax definitions.

5.1.1.1     The periodType attribute

Some elements are associated with concepts that are measurable at an instant in time while others measure change over a period of time.

The XML Schema constraints on the periodType attribute are shown below.

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

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

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

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

  elementFormDefault="qualified">

 

  <attribute name="periodType">

    <annotation>

      <documentation>

      The periodType attribute (restricting the period for XBRL items)

      </documentation>

    </annotation>

    <simpleType>

      <restriction base="token">

        <enumeration value="instant" />

        <enumeration value="duration" />

      </restriction>

    </simpleType>

  </attribute>

 

</schema>

The periodType attribute MUST be used on elements in the substitution group for the item element. A value of instant for the periodType attribute indicates that the element, when used in an XBRL instance, MUST always be associated with a context in which the period is an instant. A value of duration indicates that the element, when used in an XBRL instance, MUST always be associated with a context in which the period is a duration, expressed using the startDate and endDate elements or expressed using the forever element.

Example 30. Instant and duration concept definitions

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

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

<element id="a1" name="changeInRetainedEarnings"

         xbrli:periodType="duration"

           type="xbrli:monetaryItemType" substitutionGroup="xbrli:item"/>

<element id="a2" name="fixedAssets"

         xbrli:balance="debit"

         xbrli:periodType="instant"

         type="xbrli:monetaryItemType" substitutionGroup="xbrli:item"/>

</schema>

5.1.1.2     The balance attribute (optional)

An optional balance attribute MAY be added to the definition of an element if its type is monetaryItemType or derived from monetaryItemType. The balance attribute MUST NOT be used on items that do not have type equal to the monetaryItemType or to a type that is derived from monetaryItemType.

If the idea of debit/credit balance is appropriate to the element, it MAY be indicated using this attribute.

The XML Schema constraints on the balance attribute are shown below.

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

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

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

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

  elementFormDefault="qualified">

 

  <attribute name="balance">

    <annotation>

      <documentation>

      The balance attribute (imposes calculation relationship restrictions)

      </documentation>

    </annotation>

    <simpleType>

      <restriction base="token">

        <enumeration value="debit" />

        <enumeration value="credit" />

      </restriction>

    </simpleType>

  </attribute>

 

</schema>

Example 31. Using the balance element to indicate normal debit and credit balances

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

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

<element

  id="netIncome" name="netIncome" xbrli:balance="credit"

  xbrli:periodType="duration"

    type="xbrli:monetaryItemType" substitutionGroup="xbrli:item"/>

<element

  id="fixedAssets" name="fixedAssets" xbrli:balance="debit"

  xbrli:periodType="instant"

    type="xbrli:monetaryItemType" substitutionGroup="xbrli:item"/>

</schema>

The balance attribute is important to applications that consume numbers related to accounting concepts such as asset, liability, equity, revenue and expense. The balance attribute (debit/credit) provides a definitive declaration of how values in XBRL instances are to be authored and interpreted when the debit/credit designation is provided.

Table 5. Correct signage in an XBRL instance

Taxonomy element

Account balance

Sign of XBRL instance element value

balance="credit"

Credit

Positive or zero

balance="credit"

Debit

Negative or zero

balance="debit"

Debit

Positive or zero

balance="debit"

Credit

Negative or zero

The numeric representation of a debit or credit item will normally (that is, more often than not) be positive in an XBRL instance.

Example 32. A concept appearing with positive and negative values in an XBRL instance

<xbrl xmlns:my="http://my.namespace.com">

  <my:netIncome precision="3" unitRef="u1" contextRef="c1">500</my:netIncome>

  <my:netIncome precision="3" unitRef="u1" contextRef="c2">-200</my:netIncome>

</xbrl>

Meaning: A profit of 500 and a loss of 200 in different contexts.

In addition, the assignment of balance attributes constrains the legal weights in calculationArc elements.

Table 6. Constraints among the balance attribute and calculation arc weights

balance attribute

of "from" item

balance attribute

of "to" item

illegal values of the weight attribute on calculationArc

debit

debit

Negative (< 0)

debit

credit

Positive (> 0)

credit

debit

Positive (> 0)

credit

credit

Negative (< 0)

5.1.1.3     Item data types

All item types MUST be one of the types listed below or derived from one of them by restriction. This set of XBRL provided base types covers the appropriate subset of XML Schema built-in types (both primitive and derived) [SCHEMA-2] as well as 4 types that have been identified as having particular relevance to the domain space addressed by XBRL (monetaryItemType, sharesItemType, pureItemType and fractionItemType) and hence explicitly defined in the XBRL namespace. All these types have simple content except for fractionItemType. Therefore, an item type in a taxonomy can never have complex content unless it is derived by restriction from fractionItemType.

The [SCHEMA‑1] mechanism that enables the explicit assertion of the type of an element in an instance document (http://www.w3.org/TR/xmlschema-1/index.html#xsi_type) MUST NOT be applied to any item or tuple in an XBRL instance. The type of items and tuples MUST be specified in the appropriate taxonomy schema instead.

Table 7. Defined item types

XBRL Item Type

Base type

unitRef attribute

decimalItemType

decimal

yes

floatItemType

float

yes

doubleItemType

double

yes

The following numeric types are all based on the XML Schema built-in types that are derived by restriction from decimal.

integerItemType

integer

yes

nonPositiveIntegerItemType

nonPositiveInteger

yes

negativeIntegerItemType

negativeInteger

yes

longItemType

long

yes

intItemType

int

yes

shortItemType

short

yes

byteItemType

byte

yes

nonNegativeIntegerItemType

nonNegativeInteger

yes

unsignedLongItemType

unsignedLong

yes

unsignedIntItemType

unsignedInt

yes

unsignedShortItemType

unsignedShort

yes

unsignedByteItemType

unsignedByte

yes

positiveIntegerItemType

positiveInteger

yes

The following numeric types are all types that have been identified as having particular relevance to the domain space addressed by XBRL and are hence included in addition to the built-in types from XML Schema.

monetaryItemType           

xbrli:monetary

yes

sharesItemType

xbrli:shares

yes

pureItemType

xbrli:pure

yes

fractionItemType

complex type with the numerator being a decimal and the denominator being a non-zero, decimal (xbrli:nonZeroDecimal)

yes

The following non-numeric types are all based on XML Schema built-in types that are not derived from either decimal or string.

stringItemType

string

no

booleanItemType

Boolean

no

hexBinaryItemType

hexBinary

no

base64BinaryItemType

base64Binary

no

anyURIItemType

anyURI

no

QNameItemType

QName

no

durationItemType

duration

no

dateTimeItemType

dateTime

no

timeItemType

time

no

dateItemType

date

no

gYearMonthItemType

gYearMonth

no

gYearItemType

gYear

no

gMonthDayItemType

gMonthDay

no

gDayItemType

gDay

no

gMonthItemType

gMonth

no

The following non-numeric types are all based on the XML Schema built-in types that are derived by restriction (and/or list) from string.

normalizedStringItemType

normalizedString

no

tokenItemType

token

no

languageItemType

language

no

NameItemType

Name

no

NCNameItemType

NCName

no

Some of these types, especially some of those that XML Schema has defined for backward compatibility with Document Type Definitions (“DTDs”), may never be needed for any XBRL application, but all are provided by XBRL for completeness and compatibility with XML Schema.

Example 33. Deriving an enumerated item type

<schema targetNamespace="http://www.someCompany.com/taxonomy"

        xmlns:my="http://www.someCompany.com/taxonomy"

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

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

 

  <complexType name="stateProvinceItemType">

    <simpleContent>

      <restriction base="xbrli:tokenItemType">

         <enumeration value="MI"/>

         <enumeration value="ON"/>

      </restriction>

    </simpleContent>

  </complexType>

 

<element name="stateProvince" id="my_stateProvince" xbrli:periodType="instant"

         substitutionGroup="xbrli:item" type="my:stateProvinceItemType"/>

</schema>

Meaning:  Deriving new item types by restriction from the XBRL provided item types is the only allowed method for XBRL taxonomy schemas. Earlier, in Example 18, the stateProvinceType was defined and used to define a sub-element of segment. Here, instead we define an XBRL concept appearing in the company’s own taxonomy; note that the previously defined simple type is not used.

5.1.1.3.1      The monetary, shares and pure data types

The XBRL instance schema defines the monetary data type, which specialises the XML Schema decimal type. All numeric elements in XBRL Taxonomies that represent monetary values MUST use the monetaryItemType data type or one derived from it. The shares data type represents share-based values and the pure data type represents growth rates, percentages, and other measures where an implicit numerator and denominator are expressed in the same units. See Section 5.1.1.3 for definitions of the item types that use these special data types.

The XML Schema definitions of these data types are shown below.

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

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

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

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

  elementFormDefault="qualified">

 

  <annotation>

    <documentation>

    Define the simple types used as a base for for item types

    </documentation>

  </annotation>

 

  <simpleType name="monetary">

    <annotation>

      <documentation>

      the monetary type serves as the datatype for those financial

      concepts in a taxonomy which denote units in a currency.

      Instance items with this type must have a unit of measure

      from the ISO 4217 namespace of currencies.

      </documentation>

    </annotation>

    <restriction base="decimal" />

  </simpleType>

 

  <simpleType name="shares">

    <annotation>

      <documentation>

      This datatype serves as the datatype for share based

      financial concepts.

      </documentation>

    </annotation>

    <restriction base="decimal" />

  </simpleType>

 

  <simpleType name="pure">

    <annotation>

      <documentation>

      This datatype serves as the type for dimensionless numbers

      such as percentage change, growth rates, and other ratios

      where the numerator and denominator have the same units.

      </documentation>

    </annotation>

    <restriction base="decimal" />

  </simpleType>

 

</schema>

5.1.1.3.2      The fractionItemType data type

The values of some facts that are to be reported may be known exactly but it may not be possible to represent them exactly using any of the built-in data types provided for in XML Schema. Examples are fractional values whose decimal representation contains recurring digits such as 1/3 (whose decimal representation is 0.333333…). To enable XBRL instances to report these exact values, a complex type, fractionItemType, is provided. All values of fractionItemType are exact. The precision and decimals attributes MUST not occur on items with the fractionItemType.

The XML Schema constraints on the fractionItemType are shown below.

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

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

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

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

  elementFormDefault="qualified">

 

  <element name="numerator" type="decimal" />

  <element name="denominator" type="xbrli:nonZeroDecimal" />

  <complexType name="fractionItemType" final="extension">

    <sequence>

      <element ref="xbrli:numerator"/>

      <element ref="xbrli:denominator"/>

    </sequence>

    <attribute name="contextRef" type="IDREF" use="required" />

    <attribute name="unitRef" type="IDREF" use="required" />

    <attribute name="id" type="ID" use="optional" />

    <anyAttribute namespace="##other" processContents="lax" />

  </complexType>

 

</schema>

 


Example 34. Representing fractions

Fractional value

Representation

1/3

<myTaxonomy:oneThird id="oneThird" unitRef="u1" contextRef="numC1">

    <numerator>1</numerator>

    <denominator>3</denominator>

</myTaxonomy:oneThird>

 

The numerator element MUST contain numeric values. The denominator element MUST contain a numeric value that is non-zero and finite.

5.1.2       The linkbaseRef element

The linkbaseRef element MAY occur at the XPath [XPATH] path "schema/annotation/appinfo/*" in a taxonomy schema. In a taxonomy schema, the linkbaseRef element identifies a linkbase that MUST always participate in a DTS if that taxonomy schema participates in the DTS.

The syntax of the linkbaseRef element in taxonomy schemas is identical to the syntax of the linkbaseRef element in XBRL instances. For more details, see Section 4.2.5.

5.1.3       Defining custom role types – the roleType element

The roleType element contains a custom role type definition. The roleType element describes the custom role type by defining the roleURI of the role type, declaring the elements that the role type may be used on, and providing a human-readable definition of the role type.

Role types define custom values for the xlink:role attribute on the [XLINK] extended link and resource elements. The roleType element MUST be located at the [XPATH] path “schema/annotation/appinfo”. The role values that are defined by this specification (as standard role attribute values) MUST NOT be redefined using the roleType element.

There MUST NOT be more than one roleType element with the same roleURI attribute value within a taxonomy schema. Within a DTS, there MAY be more than one roleType element with the same roleURI attribute value. However, all roleType elements with the same roleURI attribute value MUST be s-equal.

The value of any xlink:role attribute MUST be an absolute URI. For the definitionLink, calculationLink, presentationLink, labelLink, referenceLink, footnoteLink, label, reference, and footnote elements, the value of the xlink:role attribute MUST be a standard role value defined in this specification or a custom role value defined by a roleType element.  The value of the roleURI attribute identifies the xlink:role attribute value that is being defined. The values of the usedOn sub-elements identify which elements are allowed to use the custom role type. Since roleType elements are pointed to via a roleRef element in linkbases that use the custom role type, the roleType element MAY have an id attribute.


Example 35. Defining a custom role type

Example: The role type definition of a role: "http://www.mycomp.com/role/endnote" to indicate those footnotes in an XBRL instance that ought to be presented only at the end of a document.

<schema targetNamespace="http://www.mycomp.com/mytaxonomy"

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

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

<annotation>

<appinfo>

    <link:roleType roleURI="http://www.mycompany.com/role/endnote"

    id=”endnote”>

      <link:definition>

      A footnote that should be displayed only at the end of a document

      </link:definition>

      <link:usedOn>link:footnote</link:usedOn>

    </link:roleType>

  </appinfo>

</annotation>

</schema>

This roleType element defines a role that could be used as follows:

<link:roleRef xlink:type="simple"

  xlink:href="mycomproles.xsd#endnote"

  roleURI="http://www.mycomp.com/role/endnote"/>

 

 

<link:footnote xlink:role="http://www.mycomp.com/role/endnote"

               xlink:type="resource" xlink:label="endnote1">

Excluding the effects of the merger and contingent liabilities.

</link:footnote>

The xlink:role value is resolved back to the roleType element by finding the roleRef element with a roleURI attribute value that matches the xlink:role value. The xlink:href attribute on the roleRef element points directly (via the fragment identifier) to the roleType element with the id attribute equal to “endnote” in the mycomproles.xsd taxonomy schema. The roleType element has a matching roleURI attribute value.

The XML Schema constraints on the roleType element and its sub-elements are set out below.

<schema targetNamespace="http://www.xbrl.org/2003/linkbase"

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

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

  xmlns:xl="http://www.xbrl.org/2003/XLink"

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

  elementFormDefault="qualified">

 

  <element name="definition" type="string">

    <annotation>

      <documentation>

      The element to use for human-readable definition

      of custom roles and arc roles.

      </documentation>

    </annotation>

  </element>

 

  <element name="usedOn" type="QName">

    <annotation>

      <documentation>

      Definitionof the usedOn element - used

      to identify what elements may use a

      taxonomy defined role or arc role value.

      </documentation>

    </annotation>

  </element>

 

  <element name="roleType">

    <annotation>

      <documentation>

      The roleType element definition - used to define custom

      role values in XBRL extended links.

      </documentation>

    </annotation>

    <complexType>

      <sequence>

        <element ref="link:definition" minOccurs="0"/>

        <element ref="link:usedOn" maxOccurs="unbounded"/>

      </sequence>

      <attribute name="roleURI" type="xlink:nonEmptyURI" use="required"/>

      <attribute name="id" type="ID"/>

    </complexType>

  </element>

 

</schema>

5.1.3.1     The roleURI attribute

The roleURI attribute MUST occur and MUST contain the role value being defined. When the custom role type is used, the xlink:role attribute value matches the value of the roleURI.

5.1.3.2     The id attribute on roleType elements (optional)

The roleType element MAY have an id attribute. The value of the id attribute MUST conform to the [XML] rules for attributes with the ID type (http://www.w3.org/TR/REC-xml#NT-TokenizedType). Providing an id attribute simplifies the content of the xlink:href attribute on roleRef elements.

5.1.3.3     The definition element in roleType elements (optional)

The roleType element MAY contain a definition element. The content of a definition element MUST be a string giving meaning to the role type.

5.1.3.4     The usedOn element in roleType elements

The roleType element MAY contain one or more usedOn elements. The usedOn element identifies which elements MAY use the role type being defined. Elements that use the defined role type MUST be identified with a usedOn element in the roleType element. Within a roleType element there MUST NOT be s-equal usedOn elements.

5.1.4       Defining custom arc role types – the arcroleType element

The arcroleType element contains a custom arc role definition. The arcroleType element describes the custom arc role type by declaring the arc role value, declaring the elements that the arc role type may be used on, declaring the type of cycles that are allowed for a network of relationships using the arc role type, and providing a human-readable definition of the meaning of the arc role type.

The arcroleType element MUST be located at the [XPATH] path “schema/annotation/appinfo. The arc role values defined by this specification (as standard arc role values) MUST NOT be redefined using the arcroleType element.

There MUST NOT be more than one arcroleType element with the same arcroleURI attribute value within a taxonomy schema. Within a DTS, there MAY be more than one arcroleType element with the same arcroleURI attribute value. However, all arcroleType elements with the same arcroleURI attribute value MUST be s-equal.

The value of any xlink:arcrole attribute MUST be a URI. For the definitionArc, calculationArc, presentationArc, labelArc, referenceArc and footnoteArc elements the value of the xlink:arcrole attribute MUST be either a standard arc role value defined by this specification or a custom arc role value defined by an arcroleType element.

The value of the arcroleURI identifies the xlink:arcrole attribute value that is being defined. The values of the usedOn sub-elements identify which arcs may use this arc role type. Because arcroleType elements are pointed to via an arcroleRef element in linkbases that use the custom arc role value, the arcroleType element MAY have an id attribute.

Example 36. Defining a custom arc role value

Example: The definition of an arc role value: "http://www.mycomp.com/arcrole/average-item" that connects items in the calculation linkbase

<schema targetNamespace="http://www.mycomp.com/mytaxonomy"

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

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

<annotation>

<appinfo>

    <link:arcroleType arcroleURI="http://www.mycomp.com/arcrole/average-item"

      id="average-item"

      cyclesAllowed="none">

      <usedOn>link:calculationArc</usedOn>

    </link:arcroleType>

  </appinfo>

</annotation>

</schema>

<link:arcroleRef xlink:type="simple"

  xlink:href="mycomparcroles.xsd#average-item"

  arcroleURI="http://www.mycomp.com/arcrole/average-item"/>

 

 

<link:calculationArc xlink:arcrole="http://www.mycomp.com/arcrole/average-item"

                     xlink:type="arc"

                     xlink:from="salesAverage" xlink:to="salesDetail"

                     link:weight="1"/>

 

The xlink:arcrole value is resolved back to the arcroleType element by finding the arcroleRef element with an arcroleURI attribute value that matches the xlink:arcrole value. The xlink:href attribute on the arcroleRef element points directly (via the fragment identifier) to the arcroleType element with the id attribute equal to “average-item” in the mycomparcroles.xsd taxonomy schema. The arcroleType element has a matching arcroleURI attribute value.

The XML Schema constraints on the arcroleType element and its sub-elements are set out below.

<schema targetNamespace="http://www.xbrl.org/2003/linkbase"

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

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

  xmlns:xl="http://www.xbrl.org/2003/XLink"

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

  elementFormDefault="qualified">

 

  <element name="definition" type="string">

    <annotation>

      <documentation>

      The element to use for human-readable definition

      of custom roles and arc roles.

      </documentation>

    </annotation>

  </element>

 

  <element name="usedOn" type="QName">

    <annotation>

      <documentation>

      Definition of the usedOn element - used

      to identify what elements may use a

      taxonomy defined role or arc role value.

      </documentation>

    </annotation>

  </element>

 

  <element name="arcroleType">

    <annotation>

      <documentation>

      The arcroleType element  definition - used to define custom

      arc role values in XBRL extended links.

      </documentation>

    </annotation>

    <complexType>

      <sequence>

        <element ref="link:definition" minOccurs="0"/>

        <element ref="link:usedOn" maxOccurs="unbounded"/>

      </sequence>

      <attribute name="arcroleURI" type="xlink:nonEmptyURI" use="required"/>

      <attribute name="id" type="ID"/>

      <attribute name="cyclesAllowed" use="required">

        <simpleType>

          <restriction base="NMTOKEN">

            <enumeration value="any"/>

            <enumeration value="undirected"/>

            <enumeration value="none"/>

          </restriction>

        </simpleType>

      </attribute>

    </complexType>

  </element>

 

</schema>

5.1.4.1     The arcroleURI attribute

The arcroleURI attribute MUST occur and MUST contain the arc role value being defined. When the defined arc role type is used, the xlink:arcrole attribute value matches the value of the arcroleURI.

5.1.4.2     The id attribute on arcroleType elements (optional)

The arcroleType element MAY have an id attribute. The value of the id attribute MUST conform to the [XML] rules for attributes with the ID type (http://www.w3.org/TR/REC-xml#NT-TokenizedType). Providing an id attribute simplifies the content of the xlink:href attribute on arcroleRef elements.

5.1.4.3     The cyclesAllowed attribute

The arcroleType element MUST have a cyclesAllowed attribute that identifies the type of cycles that are allowed in a network of relationships as defined in Section 3.5.3.9.7.3. Fully conformant XBRL processors MUST detect and signal networks of relationships with custom arc role types that violate the cycle restrictions documented with this attribute.

The cyclesAllowed attribute MUST have one of the following values:

Value

Notes

any

A network that allows any cycles does not limit the kinds of relationships that can be expressed.

undirected

A network that allows undirected cycles MAY have any number of directed paths between any two nodes in the network, but MUST NOT allow a node to have a path back to itself. A path is a non‑empty ­set of arcs between nodes.

none

A network that allows no cycles MUST have at most one path between any two nodes.

5.1.4.4     The definition element on arcroleType elements (optional)

The arcroleType element MAY contain a definition element. The definition element MUST contain a string giving human-readable meaning to the arc role type.

5.1.4.5     The usedOn element on arcroleType elements

The arcroleType element MAY contain one or more usedOn elements. The usedOn element identifies which elements MAY use the arc role type being defined. Elements that use the defined arc role type MUST be identified with a usedOn element in the arcroleType element. Within an arcroleType element there MUST NOT be s-equal usedOn elements.

5.1.5       Prohibit <redefine>

The [SCHEMA‑1] <redefine> construct MUST NOT appear in any taxonomy schema. Use of <redefine> could cause ambiguity in respect of the target of links in linkbases that reference locators and so it is prohibited.

5.2        Taxonomy linkbases

The extended links in a taxonomy provide additional information about concepts by expressing relationships between concepts (inter-concept relationships) or associating concepts with documentation about their meaning. The extended links in a taxonomy are grouped into linkbases, as defined in Section 3.5.1.5. Taxonomies currently use five different types of extended link: definition, calculation, presentation, label and reference. The first three types of extended link express inter-concept relationships, while the last two express relationships between concepts and their documentation.

An example of an inter-concept relationship is a calculation linkbase that expresses a relationship between “cash” and “current assets” where “cash” sums up to “current assets”. An example of a relationship between a concept and additional documentation is a label linkbase that expresses a relationship between the concept “cash” and a human-readable label in English, such as “Cash” and additional labels for cash in other languages. Also, the label linkbase may contain additional labels for different purposes, such as a label of “Opening Cash Balance”, “Closing Cash Balance” and “Total Cash”. Although the concept is always referred to as “cash” the labels provide multiple ways of tagging the concept for display purposes.

The linkbases MAY exist in a separate document from the taxonomy schema, although they MAY alternatively be embedded in the taxonomy schema at the XPath [XPATH] path "schema/annotation/appinfo/*". When a linkbase in a taxonomy is not embedded in the taxonomy schema document, the taxonomy schema MUST contain a linkbaseRef to point to the document containing the linkbase.

There are five kinds of extended links used in XBRL taxonomies.

v.                   Relation links (calculation, definition, and presentation) manage the relations between taxonomy elements.

vi.                 Label links manage the text associated with taxonomy elements in various languages.

vii.                Reference links manage the references to authoritative literature (either online or paper).

Each of these extended links MUST be held in an [XLINK] document container. The [XLINK] document container MUST be a linkbase element located either:

1.      at the path "schema/annotation/appinfo/*" in the taxonomy schema; or

2.      at the root element of a separate document.

In the presentation, calculation, and definition extended links in a DTS, arcs organise XBRL concepts into networks of relationships that associate each concept with other concepts. In label and reference extended links, arcs represent networks of relationships between concepts and their documentation (labels and references).  See Section 3.5.3.9.7.3 for details about networks of relationships.

Each network of inter-concept relationships in a DTS MAY contain root concepts. A root concept is an XBRL concept that, for a given network of relationships, is not an XML fragment on the “to” side of any relationship in the network. It is possible for a concept to be a root concept in one network of relationships but not in another network of relationships. Note that this implies that any disconnected concept, i.e. one that is neither on the “to” side nor the “from” side of any relationship in any network, is a root concept.

The presentation, definition, and calculation extended links are not required in order to specify the formatting of a report derived from a collection of XBRL instances. However, XBRL instance consuming applications are free to use the semantic information provided in a DTS to format such reports as they deem appropriate.

Taxonomy authors may or may not find it useful to keep the networks of presentation, calculation and definition relationships in some kind of correspondence.

Inter-concept relationships and relationships between concepts and resources that document them MAY be overridden or prohibited (See Section 3.5.3.9.7 for details). As an example of prohibition, consider the situation of a third party desiring to create a new “sub-total” concept intervening between “children” concepts that already have summation-item arcs to the “total” concept (See Section 5.2.5.2 for details about summation-item arcs and calculation relationships in extended links). The creator of the sub-total concept will add arcs from the sub-total concept to the children concepts and from the total concept to the sub-total concept. There would then be two paths from the children concepts to the total concept, one using the new arcs through the sub-total concept, and the other using the original arcs direct from the summation concept. In the case of calculation links, this could result in the double counting of values. The creator of the sub-total concept SHOULD create prohibiting arcs to prevent this, effectively removing the arcs going directly from the total concept to the children concepts from the network of relationships in the calculation.

Example 37. Using relationship prohibition to insert a new sub-total into a calculation network

One or more relationships in a network of relationships can form a cycle (that is, there may be a path in the network from an XML fragment back to that same XML fragment without involving any one relationship more than once). Depending on the semantics of the relationships in a network, different types of cycles may be semantically coherent, or they may represent a semantic inconsistency that processing applications MAY choose to detect.

Fully conformant XBRL processors MUST detect cycles that constitute semantic inconsistencies. Semantically inconsistent cycles are identified for each network that is given semantic meaning in this specification.

Example 38. Types of cycles

To illustrate networks of relationships between concepts, consider the following concepts that might be defined in a taxonomy (note that the label would not be part of the element; labels are just shown to provide clarity):

Example 39. Elements of a financial reporting taxonomy

Label

Element Name

Balance

Substitution Group

Income Statement

incomeStatement

 

 

… other taxonomy elements

(various)

(various)

(various)

Net Income Before Tax

netIncomeBeforeTax

credit

item

Taxes

taxes

debit

item

Net Income After Tax

netIncomeAfterTax

credit

item

Extraordinary Items

extraordinaryItems

debit

item

Net Income

netIncome

credit

item

Performance Measures

performanceMeasures

 

item

Suppose that the mathematical relations that exist between the concepts expressed as elements within the taxonomy as documented by some source are as follows:

1.      netIncomeAfterTax = netIncomeBeforeTaxtaxes

2.      netIncome = netIncomeAfterTaxextraordinaryItems

The calculation linkbase might then contain calculation extended links to facilitate computation of netIncome, netIncomeBeforeTax, netIncomeAfterTax, per the formulae above and expressed in a tree hierarchy in an application.

Example 40. Hierarchy in a calculation linkbase

Example: Calculation hierarchy in which each item contributes to a summation.

 

Arcs are annotated with the numeric weight in parentheses. The weight indicates the weight attribute value of the calculation link expressing how the element contributes to the calculation/summation.

The definition linkbase might also contain definition extended links that relate concepts to other concepts. In the case below, performanceMeasures is an element defined in the taxonomy and the types of performance measures are: netIncome, netIncomeBeforeTax, and netIncomeAfterTax. The xlink:arcrole of the link, an absolute URI such as http://www.xbrl.org/2003/arcrole/general-special, explains the type of definition relationship of the relation. See Section 3.5.3.9.4 for details.

Example 41. Hierarchy of general-special arcs in a definition linkbase

Example: Definition hierarchy in which various concepts are defined to be “Performance Measures.”

 

Arcs are annotated with their “order” attribute used for presenting the hierarchy.

Presentation links are used to arrange taxonomy elements into a hierarchy and specific ordering. In general, different uses will require different sets of presentation links. There is one set of users – taxonomy developers and domain experts working with a taxonomy – whose presentation needs remain relevant throughout the entire lifecycle of a taxonomy. In some sense this view is “context free” as opposed to the presentation of instance data that is “context dependent.”  When taxonomies are published they cannot contain all possible presentations but they MAY contain at least one “developer’s eye” view, which is “context free” in the sense that it does not need to take XBRL instance contexts into account. The presentation linkbase in this example could contain presentation links to organise concepts to look like line items in a financial statement. Another presentation linkbase could contain links to organise a subset of these same concepts into a data collection form.

Example 42. Hierarchy in a presentation linkbase

Example: Presentation hierarchy that mimics the order in which line items might appear on an income statement.

 

This view might be used in applications to present taxonomies to users of the application. The arcs are annotated with their “order” attribute.

In these examples, the three linkbases are trees, but they need not be strict trees at all. This is particularly true for the calculation linkbase. There are several ways to calculate movements in Equity, for example: one might net the issuing and retirement of common stock, net the issuing and retirement of preferred stock, and add those two – or one might add up all the issuance of stock whether common or preferred, and net it against the retirement of common and preferred. Although the calculations are hierarchical (that is, there are no loops), they do not form a tree.

5.2.1       The linkbase element

The linkbase element is fully documented in Section 3.5.2.

5.2.2       The labelLink element

The labelLink element is an extended link. Its generic syntax is documented in Section 3.5.3. It is intended to contain relationships between concepts and textual documentation and labels for those concepts.

The XML Schema constraints on the labelLink element are shown below.

<schema targetNamespace="http://www.xbrl.org/2003/linkbase"

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

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

  xmlns:xl="http://www.xbrl.org/2003/XLink"

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

  elementFormDefault="qualified">

 

  <element name="labelLink" substitutionGroup="xl:extended">

    <annotation>

      <documentation>

      label extended link element definition

      </documentation>

    </annotation>

    <complexType>

      <complexContent>

        <restriction base="xl:extendedType">

          <choice minOccurs="0" maxOccurs="unbounded">

            <element ref="xl:title"/>

            <element ref="link:documentation"/>

            <element ref="link:loc"/>

            <element ref="link:labelArc"/>

            <element ref="link:label"/>

          </choice>

          <anyAttribute namespace="http://www.w3.org/XML/1998/namespace" processContents="lax" />

        </restriction>

      </complexContent>

    </complexType>

  </element>

 

</schema>

5.2.2.1     Locators in labelLink elements

labelLink elements MUST NOT contain locators that are not loc elements. loc elements are documented in detail in Section 3.5.3.7. The loc element, when used in a labelLink, MUST only point to concepts in taxonomy schemas or to label resources as defined in 5.2.2.2.

5.2.2.2     The label element

Although each taxonomy defines a single set of elements representing a set of business reporting concepts, the human-readable XBRL documentation for those concepts, including labels (strings used as human-readable names for each concept) and other explanatory documentation, is contained in a resource element in the label linkbase. The resource uses the xml:lang attribute to specify the language used (via the XML standard lang attribute) and an optional classification of the purpose of the documentation (via a role attribute).

This ability to provide documentation in a variety of different languages enables XBRL concepts to be more easily reported in a multilingual environment.

Documentation of XBRL concepts MUST be contained in label elements in labelLink extended links. The label element is an [XLINK] resource. Its generic syntax is documented in Section 3.5.3.8. The label element MUST have the standard xml:lang attribute, and it MUST appear inside a labelLink element. This content of the label element is mixed, allowing a simple string, a fragment of XHTML or a combination of both.

XBRL processors are NOT REQUIRED to detect or display concept documentation that appears anywhere other than in a label element.

The XML Schema constraints on the label element are shown below.

<schema targetNamespace="http://www.xbrl.org/2003/linkbase"

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

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

  xmlns:xl="http://www.xbrl.org/2003/XLink"

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

  elementFormDefault="qualified">

 

  <element name="label" substitutionGroup="xl:resource">

    <annotation>

      <documentation>

      Definition of the label  resource element.

      </documentation>

    </annotation>

    <complexType mixed="true">

      <complexContent mixed="true">

        <extension base="xl:resourceType">

          <sequence>

            <any namespace="http://www.w3.org/1999/xhtml"

              processContents="skip" minOccurs="0" maxOccurs="unbounded"/>

          </sequence>

          <anyAttribute namespace="http://www.w3.org/XML/1998/namespace"

            processContents="lax" />

        </extension>

      </complexContent>

    </complexType>

  </element>

 

</schema>

Example 43. Label resource examples

<label xlink:type="resource" xlink:role="http://www.xbrl.org/2003/role/label"

     xlink:label="ci_currentAssets_en"

       xml:lang="en">Current Assets</label>

<label xlink:type="resource" xlink:role="http://www.xbrl.org/2003/role/label"

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

       xml:lang="en"><xhtml:b>Net Income</xhtml:b> (Loss)</label>

5.2.2.2.1      The xml:lang attribute on label elements

All label resources MUST have an xml:lang attribute identifying the language used for the content of the label. The value of the xml:lang attribute MUST conform to [XML] rules. (See http://www.w3.org/TR/2000/REC-xml-20001006#sec-lang-tag for details).

5.2.2.2.2      The xlink:role attribute on label elements (optional)

Label resources MAY contain an xlink:role attribute, which SHOULD distinguish between label resources by the nature of the XBRL concept documentation that they provide. Table 8 specifies all standard xlink:role attribute values and their meanings for label resources.

Table 8. Standard label role attribute values.

label resource xlink:role attribute value

Meaning

(Omitted role attribute)

Standard label for a concept.

http://www.xbrl.org/2003/role/label

Standard label for a concept.

http://www.xbrl.org/2003/role/terseLabel

Short label for a concept, often omitting text that should be inferable when the concept is reported in the context of other related concepts.

http://www.xbrl.org/2003/role/verboseLabel

Extended label for a concept, making sure not to omit text that is required to enable the label to be understood on a stand alone basis.

http://www.xbrl.org/2003/role/positiveLabel

http://www.xbrl.org/2003/role/positiveTerseLabel

http://www.xbrl.org/2003/role/positiveVerboseLabel

 

http://www.xbrl.org/2003/role/negativeLabel

http://www.xbrl.org/2003/role/negativeTerseLabel

http://www.xbrl.org/2003/role/negativeVerboseLabel

 

http://www.xbrl.org/2003/role/zeroLabel

http://www.xbrl.org/2003/role/zeroTerseLabel

http://www.xbrl.org/2003/role/zeroVerboseLabel

 

Label for a concept, when the value being presented is positive (negative, zero). For example, the standard and standard positive labels might be “profit after tax” and the standard negative labels “loss after tax”, the terse label and terse positive labels might both be “profit”, while the negative terse label might be “loss”.

http://www.xbrl.org/2003/role/totalLabel

The label for a concept for use in presenting values associated with the concept when it is being reported as the total of a set of other values.

http://www.xbrl.org/2003/role/periodStartLabel

http://www.xbrl.org/2003/role/periodEndLabel

The label for a concept with periodType="instant" for use in presenting values associated with the concept when it is being reported as a start (end) of period value.

http://www.xbrl.org/2003/role/documentation

Documentation of a concept, providing an explanation of its meaning and its appropriate usage and any other documentation deemed necessary.

http://www.xbrl.org/2003/role/definitionGuidance

A precise definition of a concept, providing an explanation of its meaning and its appropriate usage.

http://www.xbrl.org/2003/role/disclosureGuidance

An explanation of the disclosure requirements relating to the concept. Indicates whether the disclosure is

·          mandatory (i.e. prescribed by authoritative literature);

·          recommended (i.e. encouraged by authoritative literature;

·          common practice (i.e. not prescribed by authoritative literature, but disclosure is common);

·          structural completeness (i.e., included to complete the structure of the taxonomy).

http://www.xbrl.org/2003/role/presentationGuidance

An explanation of the rules guiding presentation (placement and/or labelling) of this concept in the context of other concepts in one or more specific types of business reports. For example, “Net Surplus should be disclosed on the face of the Profit and Loss statement”.

http://www.xbrl.org/2003/role/measurementGuidance

An explanation of the method(s) required to be used when measuring values associated with this concept in business reports.

http://www.xbrl.org/2003/role/commentaryGuidance

Any other general commentary on the concept that assists in determining definition, disclosure, measurement, presentation or usage.

http://www.xbrl.org/2003/role/exampleGuidance

An example of the type of information intended to be captured by the concept.

Example 44. Arc between a concept and one of its labels

<label

  xlink:type="resource"

xlink:label="A"

xlink:role="http://www.xbrl.org/2003/role/label"

xml:lang="en">Current Assets</label>

<loc

xlink:type="locator"

xlink:href="us_bs_v2.xsd#currentAssets"

xlink:label="B"/>

<labelArc

xlink:type="arc"

xlink:from="B"

xlink:to="A"

xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label"/>

Meaning: The label resource contains the text of the label and