What are dynamic type substitutions and static element replacements?

In dynamic type substitution, the structure that contains the new element remains unmodified. When constructing an instance, the structure of a derived type may be substituted for an expected type structure. The original remains the same. The only requirements to using type substitution are that the name of the type to substitute must be specified as the value of attribute "xsi:type," an attribute of the original element, and only derived types may be substituted. (For example, SubjectType may be substituted for PersonType, but VehicleType may not be substituted.)

In static element replacement, the element substitution is done in the schema, rather than the instance. This requires extending types all the way up the containment hierarchy to the root of the schema. (While this does result in a larger number of derived types in the extension schema, it has the advantage of making the element replacements explicit in the schema.) To make the element replacement explicit, it is recommended that the schema designer include documentation in the schema indicating the name of the element being replaced. The "appinfo" namespace included in GJXDM and NIEM provide an element suited for this purpose.