22.214.171.124 DTD: Overview of coding requirements
DITA coding practices for DTDs rely heavily on entities to implement specialization and ►constraints◄ . As such, an understanding of entities is critical when working with DTD document-type shells, vocabulary modules, or constraint modules.
Entities can be defined multiple times within a single document type, but only the first definition is effective. How entities work shapes DTD coding practices. The following list describes a few of the more important entities that are used in DITA DTDs:
- Elements defined as entities
- In DITA DTDs, every element is defined as an entity. When elements are added to a content
model, they are added using the entity. This enables extension with domain specializations. For
example, the entity
%ph;usually just means "the ph element", but can be (pre)defined in a document-type shell to mean "ph plus several elements from the highlighting domain". Because the document-type shell places that entity definition before the usual definition, every element that included
%ph;in its content model now includes
<ph>plus every phrase specialization in the highlighting domain.
- Content models defined as entities
- Every element in a DITA DTD defines its content model using an entity. For example, rather
than directly setting what is allowed in
<ph>, that element sets its content model to
%ph.content;; that entity defines the actual content model. This is done to enable constraints; a constraint module can (pre)define the
%ph.content;model to remove selected elements.
- Attribute sets defined as entities
- Every element in a DITA DTD defines its attribute using an entity. For example, rather than
directly defining attributes for
<ph>, that element sets its attributes using the
%ph.attributes;entity; that entity defines the actual attributes. As above, this is done to enable constraints; a constraint module can (pre)define the
%ph.attributes;model to remove selected attributes.