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.