Document Purpose: Deep dive into XBRL 2.1 and Dimensions 1.0
Last Updated: January 2026
This document provides detailed technical information about the two foundation specifications of XBRL.
Status: Recommendation (REC)
Originally Released: December 31, 2003
Latest Update: Conformance Suite July 2025
Stability: Covered by XBRL International Stability Pledge
XBRL 2.1 is the foundation specification that defines the core XBRL language. Despite being from 2003, it remains the stable base for all XBRL implementations worldwide.
An XBRL instance is an XML document with root element <xbrli:xbrl>.
<?xml version="1.0" encoding="UTF-8"?>
<xbrli:xbrl
xmlns:xbrli="http://www.xbrl.org/2003/instance"
xmlns:link="http://www.xbrl.org/2003/linkbase"
xmlns:xlink="http://www.w3.org/1999/xlink"
xmlns:iso4217="http://www.xbrl.org/2003/iso4217"
xmlns:ex="http://example.com/taxonomy/2024">
<!-- Schema References -->
<link:schemaRef
xlink:type="simple"
xlink:href="http://example.com/taxonomy/2024/example.xsd"/>
<!-- Contexts -->
<xbrli:context id="current">
<xbrli:entity>
<xbrli:identifier scheme="http://example.com">ABC Corp</xbrli:identifier>
</xbrli:entity>
<xbrli:period>
<xbrli:instant>2024-12-31</xbrli:instant>
</xbrli:period>
</xbrli:context>
<!-- Units -->
<xbrli:unit id="usd">
<xbrli:measure>iso4217:USD</xbrli:measure>
</xbrli:unit>
<!-- Facts -->
<ex:Revenue contextRef="current" unitRef="usd" decimals="0">
1000000
</ex:Revenue>
</xbrli:xbrl>
<link:schemaRef>)Links to the taxonomy schema that defines concepts used in the instance.
<xbrli:context>)Provides dimensional information about facts:
<xbrli:unit>)Defines measurement units for numeric facts.
The actual data values, either:
<xbrli:entity>
<xbrli:identifier scheme="http://www.sec.gov/CIK">0001234567</xbrli:identifier>
<!-- Optional segment for additional dimensions -->
<xbrli:segment>
<!-- Explicit dimensions go here -->
</xbrli:segment>
</xbrli:entity>
Components:
Three period types:
<xbrli:period>
<xbrli:instant>2024-12-31</xbrli:instant>
</xbrli:period>
Used for: Balance sheet items, point-in-time values
<xbrli:period>
<xbrli:startDate>2024-01-01</xbrli:startDate>
<xbrli:endDate>2024-12-31</xbrli:endDate>
</xbrli:period>
Used for: Income statement items, flow values
<xbrli:period>
<xbrli:forever/>
</xbrli:period>
Used for: Timeless facts (rare)
Note: OIM deprecates "forever" period.
<xbrli:scenario>
<!-- Additional dimensions -->
</xbrli:scenario>
Optional element for additional context dimensions. In XBRL Dimensions, this is where explicit dimensions are reported.
Note: OIM eliminates segment/scenario distinction, treating all as dimensions.
<xbrli:unit id="usd">
<xbrli:measure>iso4217:USD</xbrli:measure>
</xbrli:unit>
<xbrli:unit id="shares">
<xbrli:measure>xbrli:shares</xbrli:measure>
</xbrli:unit>
<xbrli:unit id="usd-per-share">
<xbrli:divide>
<xbrli:unitNumerator>
<xbrli:measure>iso4217:USD</xbrli:measure>
</xbrli:unitNumerator>
<xbrli:unitDenominator>
<xbrli:measure>xbrli:shares</xbrli:measure>
</xbrli:unitDenominator>
</xbrli:divide>
</xbrli:unit>
<xbrli:unit id="kilowatt-hours">
<xbrli:multiply>
<xbrli:measure>units:kW</xbrli:measure>
<xbrli:measure>units:hr</xbrli:measure>
</xbrli:multiply>
</xbrli:unit>
<ex:Revenue contextRef="c1" unitRef="usd" decimals="0">
1000000
</ex:Revenue>
Attributes:
contextRef: Reference to contextunitRef: Reference to unit (required for numeric)decimals: Precision specification
INF: Infinite precision (exact)precision (alternative to decimals): Significant figures<ex:CompanyName contextRef="c1">
Acme Corporation
</ex:CompanyName>
Attributes:
contextRef: Reference to contextxml:lang (optional): Language code<ex:FilingDate contextRef="c1">2024-12-31</ex:FilingDate>
Uses XML Schema date format (YYYY-MM-DD).
<ex:IsPublicCompany contextRef="c1">true</ex:IsPublicCompany>
Values: true or false
<ex:LoanDetails>
<ex:LoanID contextRef="c1">L001</ex:LoanID>
<ex:LoanAmount contextRef="c1" unitRef="usd" decimals="0">100000</ex:LoanAmount>
<ex:InterestRate contextRef="c1" decimals="2">5.25</ex:InterestRate>
</ex:LoanDetails>
Tuples group related facts together. Facts within tuples don't need all the same context dimensions.
Note: Tuples are less common in modern taxonomies; dimensions are preferred.
The taxonomy schema (XSD file) defines concepts and their properties.
<?xml version="1.0" encoding="UTF-8"?>
<xs:schema
xmlns:xs="http://www.w3.org/2001/XMLSchema"
xmlns:link="http://www.xbrl.org/2003/linkbase"
xmlns:xbrli="http://www.xbrl.org/2003/instance"
xmlns:ex="http://example.com/taxonomy/2024"
targetNamespace="http://example.com/taxonomy/2024"
elementFormDefault="qualified">
<xs:import namespace="http://www.xbrl.org/2003/instance"
schemaLocation="http://www.xbrl.org/2003/xbrl-instance-2003-12-31.xsd"/>
<!-- Concept Definition -->
<xs:element name="Revenue"
substitutionGroup="xbrli:item"
type="xbrli:monetaryItemType"
xbrli:periodType="duration">
<xs:annotation>
<xs:appinfo>
<link:linkbaseRef
xlink:type="simple"
xlink:href="example-label.xml"
xlink:role="http://www.xbrl.org/2003/role/labelLinkbaseRef"/>
</xs:appinfo>
</xs:annotation>
</xs:element>
</xs:schema>
Each concept must specify:
xbrli:item or xbrli:tupleinstant, duration, or omitted for tuplestrue if concept cannot appear in instancestrue if nil values allowedXBRL provides specialized data types:
xbrli:monetaryItemType - Monetary amountsxbrli:sharesItemType - Share quantitiesxbrli:pureItemType - Pure numbers (percentages, ratios)xbrli:stringItemType - Textxbrli:dateItemType - Datesxbrli:booleanItemType - True/falseXBRL defines five standard linkbase types:
Provides human-readable labels for concepts.
<link:labelLink>
<link:label
xlink:type="resource"
xlink:label="revenue_label"
xlink:role="http://www.xbrl.org/2003/role/label"
xml:lang="en">
Revenue
</link:label>
<link:label
xlink:type="resource"
xlink:label="revenue_doc"
xlink:role="http://www.xbrl.org/2003/role/documentation"
xml:lang="en">
Total revenue earned during the period.
</link:label>
<link:loc
xlink:type="locator"
xlink:href="example.xsd#Revenue"
xlink:label="revenue_loc"/>
<link:labelArc
xlink:type="arc"
xlink:from="revenue_loc"
xlink:to="revenue_label"
xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label"/>
</link:labelLink>
Standard Label Roles:
label - Standard labelverboseLabel - Long formterseLabel - Abbreviateddocumentation - Definition/explanationtotalLabel - For totalsLinks concepts to authoritative references (accounting standards, regulations).
<link:referenceLink>
<link:reference
xlink:type="resource"
xlink:label="revenue_ref">
<ref:Name>FASB ASC</ref:Name>
<ref:Topic>605</ref:Topic>
<ref:SubTopic>10</ref:SubTopic>
<ref:Section>S99</ref:Section>
</link:reference>
<link:loc
xlink:type="locator"
xlink:href="example.xsd#Revenue"
xlink:label="revenue_loc"/>
<link:referenceArc
xlink:type="arc"
xlink:from="revenue_loc"
xlink:to="revenue_ref"
xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-reference"/>
</link:referenceLink>
Defines summation relationships between concepts.
<link:calculationLink
xlink:type="extended"
xlink:role="http://example.com/role/IncomeStatement">
<link:loc
xlink:type="locator"
xlink:href="example.xsd#GrossProfit"
xlink:label="gp_loc"/>
<link:loc
xlink:type="locator"
xlink:href="example.xsd#Revenue"
xlink:label="rev_loc"/>
<link:loc
xlink:type="locator"
xlink:href="example.xsd#CostOfGoodsSold"
xlink:label="cogs_loc"/>
<!-- GrossProfit = Revenue - CostOfGoodsSold -->
<link:calculationArc
xlink:type="arc"
xlink:from="gp_loc"
xlink:to="rev_loc"
xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item"
order="1"
weight="1"/>
<link:calculationArc
xlink:type="arc"
xlink:from="gp_loc"
xlink:to="cogs_loc"
xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item"
order="2"
weight="-1"/>
</link:calculationLink>
Attributes:
order: Processing sequenceweight: Multiplier (usually 1 or -1)Validation Rule:
Parent = Sum(Children × Weight)
within tolerance based on decimals
Defines display hierarchies for concepts.
<link:presentationLink
xlink:type="extended"
xlink:role="http://example.com/role/BalanceSheet">
<link:loc
xlink:type="locator"
xlink:href="example.xsd#Assets"
xlink:label="assets_loc"/>
<link:loc
xlink:type="locator"
xlink:href="example.xsd#CurrentAssets"
xlink:label="current_loc"/>
<link:loc
xlink:type="locator"
xlink:href="example.xsd#Cash"
xlink:label="cash_loc"/>
<!-- Assets -->
<!-- Current Assets -->
<!-- Cash -->
<link:presentationArc
xlink:type="arc"
xlink:from="assets_loc"
xlink:to="current_loc"
xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child"
order="1"
preferredLabel="http://www.xbrl.org/2003/role/label"/>
<link:presentationArc
xlink:type="arc"
xlink:from="current_loc"
xlink:to="cash_loc"
xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child"
order="1"/>
</link:presentationLink>
Attributes:
order: Display sequencepreferredLabel: Which label role to useDefines semantic relationships between concepts.
<link:definitionLink
xlink:type="extended"
xlink:role="http://example.com/role/Definitions">
<link:loc
xlink:type="locator"
xlink:href="example.xsd#NetIncome"
xlink:label="ni_loc"/>
<link:loc
xlink:type="locator"
xlink:href="example.xsd#Profit"
xlink:label="profit_loc"/>
<!-- NetIncome is similar-to Profit -->
<link:definitionArc
xlink:type="arc"
xlink:from="ni_loc"
xlink:to="profit_loc"
xlink:arcrole="http://www.xbrl.org/2003/arcrole/similar-tuples"/>
</link:definitionLink>
Standard Arc Roles:
general-special - Generalizationessence-alias - Equivalent conceptssimilar-tuples - Similar structuresrequires-element - DependenciesNote: Definition linkbase is heavily used by XBRL Dimensions.
<xbrli:xbrl>
<!-- Facts -->
<ex:Revenue contextRef="c1" unitRef="usd" decimals="0" id="f1">
1000000
</ex:Revenue>
<!-- Footnote Link -->
<link:footnoteLink>
<link:footnote
xlink:type="resource"
xlink:label="fn1"
xlink:role="http://www.xbrl.org/2003/role/footnote"
xml:lang="en">
Revenue includes extraordinary item of $50,000.
</link:footnote>
<link:loc
xlink:type="locator"
xlink:href="#f1"
xlink:label="f1_loc"/>
<link:footnoteArc
xlink:type="arc"
xlink:from="f1_loc"
xlink:to="fn1"
xlink:arcrole="http://www.xbrl.org/2003/arcrole/fact-footnote"/>
</link:footnoteLink>
</xbrli:xbrl>
Footnotes can reference:
Status: Recommendation (REC)
Released: September 18, 2006
Latest Update: Conformance Suite September 2025
XBRL Dimensions extends XBRL 2.1 to support multi-dimensional business reporting.
XBRL 2.1 provides three basic dimensions:
Many business reports need more dimensions:
Pre-defined list of members in the taxonomy.
Report revenue by geographic region and product.
<!-- Dimension -->
<xs:element name="GeographicRegionDimension"
substitutionGroup="xbrldt:dimensionItem"
type="xbrli:stringItemType"
xbrldt:typedDomainRef="..."/>
<!-- Domain (abstract) -->
<xs:element name="GeographicRegionDomain"
substitutionGroup="xbrli:item"
type="xbrli:stringItemType"
abstract="true"/>
<!-- Members -->
<xs:element name="NorthAmerica"
substitutionGroup="ex:GeographicRegionDomain"
type="xbrli:stringItemType"/>
<xs:element name="Europe"
substitutionGroup="ex:GeographicRegionDomain"
type="xbrli:stringItemType"/>
<xs:element name="Asia"
substitutionGroup="ex:GeographicRegionDomain"
type="xbrli:stringItemType"/>
<link:definitionLink>
<link:loc xlink:href="...#GeographicRegionDomain" xlink:label="domain_loc"/>
<link:loc xlink:href="...#NorthAmerica" xlink:label="na_loc"/>
<link:loc xlink:href="...#Europe" xlink:label="eu_loc"/>
<link:loc xlink:href="...#Asia" xlink:label="asia_loc"/>
<link:definitionArc
xlink:from="domain_loc"
xlink:to="na_loc"
xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member"
order="1"/>
<link:definitionArc
xlink:from="domain_loc"
xlink:to="eu_loc"
xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member"
order="2"/>
<link:definitionArc
xlink:from="domain_loc"
xlink:to="asia_loc"
xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member"
order="3"/>
</link:definitionLink>
<xbrli:context id="revenue_na">
<xbrli:entity>
<xbrli:identifier scheme="http://example.com">ABC</xbrli:identifier>
<xbrli:segment>
<xbrldi:explicitMember dimension="ex:GeographicRegionDimension">
ex:NorthAmerica
</xbrldi:explicitMember>
</xbrli:segment>
</xbrli:entity>
<xbrli:period>
<xbrli:startDate>2024-01-01</xbrli:startDate>
<xbrli:endDate>2024-12-31</xbrli:endDate>
</xbrli:period>
</xbrli:context>
<ex:Revenue contextRef="revenue_na" unitRef="usd" decimals="0">
500000
</ex:Revenue>
Values defined by XML Schema data type rather than enumerated.
<!-- Dimension -->
<xs:element name="CustomerIDDimension"
substitutionGroup="xbrldt:dimensionItem"
type="xbrli:stringItemType"
xbrldt:typedDomainRef="#CustomerIDDomain"/>
<!-- Typed Domain -->
<xs:element name="CustomerIDDomain" type="xs:string"/>
<xbrli:context id="customer_001">
<xbrli:entity>
<xbrli:identifier scheme="http://example.com">ABC</xbrli:identifier>
<xbrli:segment>
<xbrldi:typedMember dimension="ex:CustomerIDDimension">
<ex:CustomerIDDomain>CUST-001</ex:CustomerIDDomain>
</xbrldi:typedMember>
</xbrli:segment>
</xbrli:entity>
<xbrli:period>
<xbrli:instant>2024-12-31</xbrli:instant>
</xbrli:period>
</xbrli:context>
<ex:AccountsReceivable contextRef="customer_001" unitRef="usd" decimals="0">
10000
</ex:AccountsReceivable>
Hypercubes define which dimensions apply to which concepts (primary items).
Hypercube: Revenue Analysis
Dimensions:
- Geographic Region (explicit)
- Product Line (explicit)
- Time Period (built-in)
Applies to:
- Revenue
- Cost of Sales
- Gross Profit
<!-- Hypercube (abstract) -->
<xs:element name="RevenueAnalysisHypercube"
substitutionGroup="xbrldt:hypercubeItem"
type="xbrli:stringItemType"
abstract="true"/>
<link:definitionLink xlink:role="http://example.com/role/RevenueAnalysis">
<!-- Primary Item (e.g., Revenue) -->
<link:loc xlink:href="...#Revenue" xlink:label="revenue_loc"/>
<!-- Hypercube -->
<link:loc xlink:href="...#RevenueAnalysisHypercube" xlink:label="cube_loc"/>
<!-- Dimensions -->
<link:loc xlink:href="...#GeographicRegionDimension" xlink:label="geo_dim"/>
<link:loc xlink:href="...#ProductLineDimension" xlink:label="prod_dim"/>
<!-- Domains -->
<link:loc xlink:href="...#GeographicRegionDomain" xlink:label="geo_domain"/>
<link:loc xlink:href="...#ProductLineDomain" xlink:label="prod_domain"/>
<!-- Primary Item → Hypercube -->
<link:definitionArc
xlink:from="revenue_loc"
xlink:to="cube_loc"
xlink:arcrole="http://xbrl.org/int/dim/arcrole/all"
order="1"
xbrldt:contextElement="segment"
xbrldt:closed="true"/>
<!-- Hypercube → Dimension → Domain -->
<link:definitionArc
xlink:from="cube_loc"
xlink:to="geo_dim"
xlink:arcrole="http://xbrl.org/int/dim/arcrole/hypercube-dimension"
order="1"/>
<link:definitionArc
xlink:from="geo_dim"
xlink:to="geo_domain"
xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-domain"
order="1"/>
<!-- Similar for product dimension -->
</link:definitionLink>
xbrldt:contextElement
segment - Dimension goes in context's segmentscenario - Dimension goes in context's scenarioxbrldt:closed
true - Only specified dimensions allowedfalse - Additional dimensions permittedxbrldt:targetRole
Specifies which extended link role contains domain-member relationships.
Default values for dimensions when not explicitly stated.
<link:definitionArc
xlink:from="dim_loc"
xlink:to="default_member_loc"
xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-default"
order="1"/>
Usage:
| Arc Role | Purpose |
|---|---|
all |
Primary item → Hypercube (includes dimensions) |
notAll |
Primary item → Hypercube (excludes dimensions) |
hypercube-dimension |
Hypercube → Dimension |
dimension-domain |
Dimension → Domain |
domain-member |
Domain → Member (hierarchy) |
dimension-default |
Dimension → Default Member |
Facts MUST have all required dimensions defined in hypercube.
Dimension values MUST be valid members of the domain (for explicit dimensions).
Two facts with the same concept, entity, period, unit, and all dimensions are considered duplicates (error).
✅ Instance document structure
✅ Context (entity, period, scenario/segment)
✅ Units for measurements
✅ Facts (items and tuples)
✅ Taxonomy schemas (concept definitions)
✅ Five standard linkbases (labels, references, calculations, presentation, definition)
✅ Footnotes
✅ Multi-dimensional reporting
✅ Explicit dimensions (enumerated members)
✅ Typed dimensions (typed values)
✅ Hypercubes (dimensional applicability)
✅ Domain-member hierarchies
✅ Dimension defaults
✅ Complete foundation for XBRL reporting
✅ Flexible dimensional data modeling
✅ Standardized metadata definitions
✅ Comprehensive validation capabilities