Substitution groups

From Logius SBR EN Wiki
Jump to: navigation, search

Substitution groups are a building component of the W3C XML schema specification. They are used as a basic element on which other elements can be based with additions or constraints (deletions) on the basic element.

For example: a basic 'address' has a street, house number, postcode, town/city as parts. A derived element could then be a foreign address that reuses the basic element 'address' where 'country' is added.


The components are not always semantically orientated as shown in the example, but can also be technical in nature. A basic element will, for example, be provided with a string type. In accordance with the W3C specification, the technical aspects cannot be adapted by a new element that is based on the basic element. The solution for this is the use of specific substitutionGroups. The advantage of specific substitutionGroups is that syntax checks can be linked to a substitutionGroup.

For example: An element in the substitutionGroup xbrli:tuple HAS to have at least one child.


By working with specifically named substitutionGroups, it is not necessary to always derive which type of element it concerns. This is particularly laborious if the type of element has to be derived from the type of relationships that are secured by means of arcs. For example, that an element can be used as 'member'.

In its basic specification (version 2.1), XBRL International has defined two substitutionGroups:

xbrli:item XML Schema elements that are not complexType.

xbrli:tuple XML Schema elements not based on complexType.



Another two are defined in the XBRL dimensional specification (version 1.0):

xbrldt:dimensionItem XBRL items that contain abstract='true' and that are a child of a relationship in which the arc hypercube-dimension is used.

xbrldt:hypercubeItem XBRL items that contain abstract='true' and that are the parent of a relationship in which the arc hypercube-dimension is used.


SBR has also defined a number:

sbr:presentationItem XBRL items that contain abstract='true' and that are a child or parent of a relationship in which the arc parent-child is used.

sbr:domainItem XBRL items that contain abstract='true' and that are a child of a relationship in which the arc dimension-domain is used with @xbrldt:usable='false'.

sbr:domainMemberItem XBRL items that contain abstract='true' and that are a child of a relationship in which the arc dimension-domain is used with @xbrldt:usable='true' OR that are a child of a relationship in which the arc domain-member is used.

sbr:primaryDomainItem XBRL items that contain abstract='true' and that are a parent of a relationship in which the arc domain-member is used AND the child are XBRL items with @abstract='false'.

sbr:presentationTuple XBRL tuples that may NOT be repeated.

sbr:specificationTuple XBRL tuples that CAN be repeated.