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.