Overview of generalization

Darwin Information Typing Architecture (DITA) Version 1.3 Part 2: Technical Content Edition

Darwin Information Typing Architecture (DITA) Version 1.3 Part 2: Technical Content Edition
OASIS DITA Technical Committee

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:

  • It can be used to migrate content. For example, if a specialization is unsuccessful or is no longer needed, the content can be generalized back to a less specialized form.
  • It can be used for temporary round-tripping. For example, if content is shared with a process that is not specialization aware, it can be temporarily generalized for that process and then returned to specialized form.
  • It can allow reuse of specialized content in an enviroment that does not support the specialization. Similar to round-tripping, content can be generalized for sharing, without the need to re-specialize.

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.