DITA provides three extension facilities: configuration of the vocabulary modules used by DITA document types, constraint of base content models and attribute lists, and creation of new element and attribute types (specialization).
Configuration enables the definition of DITA document types that include only those vocabulary modules required for a given set of documents without the need to modify the vocabulary modules in any way. Configurations are implemented as document type shells.
Constraint enables the unilateral modification of content models and attribute lists for individual elements without modifying the base vocabulary modules involved, in the context of a specific configuration. Constraints are implemented as constraint modules, which are integrated into document type shells.
Specialization enables the creation of new element types in a way that preserves the ability to blindly interchange those new element types with any conforming DITA application. Specializations are implemented as vocabulary modules, which are then integrated into any number of document type shells.
Specialization hierarchies are implemented as sets of vocabulary modules, each of which declares the markup and entities that are unique to a specialization. The separation of the markup vocabulary and its implementing declarations into modules makes it easy to extend the hierarchy, because new modules can be added without affecting existing document types. It also makes it easy to assemble design elements from different sources into a single integrated document type shell and makes it easy to reuse specific parts of the specialization hierarchy in more than one document type shell.
DITA documents are governed by DITA document types that represent the combination of one or more structural types (maps or topics), domain vocabularies, and constraint modules that define the set of element types and attributes available to a specific document. In short, DITA provides a framework by which XML vocabulary and constraint modules can be combined in an infinite number of ways to create specific document types, as well as a set of base modules that serve as the base for further configuration, constraint, or specialization.
DITA documents are typically governed by a conforming DITA document type shell as defined in this section. However, the conformance of a DITA document is a function of the document instance, not its governing schema. Therefore conforming DITA documents are not required to use a conforming document type shell.
Conforming DITA documents are not required to have any governing document type declaration or schema. In addition, there may compelling or practical reasons to use non-conforming document type shells. For example, a document might use a document type shell that does not conform to the DITA requirements for shells in order to meet the needs of a specific tool, but the document can still be a conforming DITA document and, if the document type only allows content and attributes that are conforming, it can ensure that the documents it governs are conforming DITA documents even though the document type itself does not conform to the requirements for DITA document type shells. That is, there can be document type shells that do not conform to the coding requirements for document shells that can still ensure the creation of conforming DITA documents. There can also be document type shells that do not conform to the coding requirements for document type shells and that allow, but do not ensure, the creation of conforming DITA documents.