An augmentation point is a special substitution group head element contained within object types. It acts as a hook, allowing domains and IEPDs to define substitutable augmentations in their own local namespaces but use them along with the original, augmentable type.
For example, the Justice domain has additional properties related to nc:ConveyanceType. It defines local augmentation j:ConveyanceAugmentation and adds it to the substitution group for nc:ConveyanceAugmentationPoint, the augmentation point element of nc:ConveyanceType. Wherever nc:ConveyanceType is used in NIEM, the Justice augmentation can also be used via element substitution.
Variable | Description | Usage | NDR Reference |
---|---|---|---|
{$Name} |
Name of the augmentable type / augmentation point element | Required | Rule 7-5 How to name a component NDR Section 10.8 Component naming rules |
{$Definition} |
Augmentable type definition | Required | NDR Rule 9-25: Complex type has definition NDR Rule 9-36: Element has definition NDR Section 11.6.1: Human-readable documentation |
{$Parent} |
QName of the parent type | "structures:ObjectType" or other NIEM type | Rule 10-2 Complex object types are derived from structures:ObjectType |
{$ElementName} |
The QName of the element referenced | Required Repeat element ref line for each sub-property |
|
{$Min} |
The minimum number of allowed element occurrences within the type | ||
{$Max} |
The maximum number of allowed element occurrences within the type |
<xs:complexType name="{$Name}Type"> <xs:annotation> <xs:documentation>A data type for a(n) {$Definition}</xs:documentation> </xs:annotation> <xs:complexContent> <xs:extension base="{$Parent}"> <xs:sequence> <xs:element ref="{$ElementName}" minOccurs="{$Min}" maxOccurs="{$Max}"/> <xs:element ref="{$Name}AugmentationPoint" minOccurs="{$Min}" maxOccurs="{$Max}"/> </xs:sequence> </xs:extension> </xs:complexContent> </xs:complexType> <xs:element name="{$Name}AugmentationPoint" abstract="true"> <xs:annotation> <xs:documentation>An augmentation point for {$Name}Type</xs:documentation> </xs:annotation> </xs:element>