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.

All DITA documents contain a mix of markup from at least one structural type and zero or more domains. When generalizing the document, any individual structural type or domain can be left as-is, or it can be generalized to any of its ancestors. If the document will be edited or processed in generalized form, it might be necessary to have a document-type shell that includes all non-generalized modules from the original document-type shell.

Generalization serves several purposes:

When generalizing for migration, the @class attribute and @domains attribute should be absent from the generalized instance document, so that the default values in the document-type shell are used. When generalizing for round-tripping, the @class attribute and @domains attribute SHOULD retain the original specialized values in the generalized instance document.

Note that when using constraints, a document instance can always be converted from a constrained document type to an unconstrained document type merely by switching the binding of the document instance to the less restricted document type shell (which would also have a different @domains attribute declaration). No renaming of elements is needed to remove constraints.

Return to main page.