Association Pattern

An association is a specific relationship between objects. Associations can be used to relate two or more NIEM properties to each other, especially when characteristics of the relationship itself are needed.

Variable Replacement Table

Variable Description Usage NDR Reference
{$Name} Name of the association element / type Required NDR Rule 7-5: Component naming
NDR Section 10.8: Naming Rules
{$Definition} The definition of the code element / type Required NDR Rule 9-12: Simple type has definition
NDR Rule 9-25: Complex type has definition
NDR Rule 9-36: Element has definition
NDR Section 11.6.1: Human-readable documentation
{$ElementName} Element QName Required, Repeat element ref line for each object and characteristic of the association  
{$ParentAssociationType} QName of the parent type Usually "nc:AssociationType".
Can also extend "structures:AssociationType" or an existing association type.
 
{$Min} The minimum number of allowed element occurrences within the type    
{$Max} The maximum number of allowed element occurrences within the type    

Association Type Declaration

<xs:complexType name="{$Name}AssociationType">
    <xs:annotation>
     <xs:documentation>A data type for an association {$Definition}</xs:documentation>  
    </xs:annotation>
    <xs:complexContent>
     <xs:extension base="{$ParentAssociationType}">
        <xs:sequence>
         <xs:element ref="{$ElementName}" minOccurs="{$Min}" maxOccurs="{$Max}"/>
        </xs:sequence>
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>

  <xs:element name="{$Name}Association" type="{$Name}AssociationType" nillable="{$Nillable}">
    <xs:annotation>
      <xs:documentation>An association {$Definition}</xs:documentation>
    </xs:annotation>
  </xs:element>

Example