DITA Vocabulary Management: Modules
DITA addresses this lack of manageability by providing features that make vocabularies manageable while avoiding the inherent problems of monolithic interchange document types.
DITA essentially turns the problem on its head. Rather than having invariant monolithic document types, it provides invariant vocabulary "modules" that can be combined together to form an infinite variety of specific document types and that can themselves be extended, in a controlled fashion, to create new vocabulary modules.
Likewise, vocabulary modules can be locally configured through "constraint" modules, which enable the customization of content models and attribute lists, but only in ways that guarantee interchangeability and processability.
DITA defines a markup-based declaration mechanism that makes the nature of any configuration or extension machine-understandable. That is, a processor, looking at any conforming DITA document, can know exactly what vocabulary modules it uses and, if constraints have been applied, what those constraints are. For any given DITA element, a processor can know what standard-defined DITA elements it is based on, and thus how to apply at least some minimal DITA-defined processing to those elements.
These declaration mechanisms are the @class
and @domains
attributes. These attributes are the "magic" of DITA that make everything work. These
attributes, along with some essential rules for vocabulary composition, make it possible
for
any general-purpose DITA processor to reliably process any DITA document no matter
how it has
been configured or extended. Likewise, a human observer of the document can know how
its
markup relates to other DITA markup and can look at any given DITA vocabulary module
and know
how it relates to other modules.
Thus you can think of DITA as an unbounded set of vocabulary modules and a set of tools for combining those modules into specific document types suited to specific requirements.