Generalization is the process of reversing a specialization. It converts specialized
elements or attributes into the original types from which they were derived.
Overview of generalization
Specialized content can be generalized to any ancestor type. The generalization process can preserve information about the former level of specialization to allow round-tripping between specialized and unspecialized forms of the same content.
Element generalization
Elements are generalized by examining the @class attribute. When a generalization process detects that an element belongs to one of the modules that is being generalized, the element is renamed to a more general form.
Processor expectations when generalizing elements
Generalization processors convert elements from one or more modules into their less specialized form. The list of modules can be supplied to a generalization processor, or it can be inferred based on knowledge of a target document-type shell.
Attribute generalization
DITA provides a syntax to generalize attributes that have been specialized from the @props or @base attribute. Specialization-aware processors SHOULD process both the specialized and generalized forms of an attribute as equivalent in their values.
Generalization with cross-specialization dependencies
Dependencies across specializations limit generalization targets to those that either preserve the dependency or eliminate them. Some generalization targets will not be valid and should be detected before generalization occurs.