DocBook relies heavily on internal parameter entities
(substitution-string mechanisms that work somewhat like programming macros)
to achieve consistency, ease maintenance, and encourage appropriate customization.
Unfortunately, the density of entity references can make it difficult to read
the actual element and attribute declarations. The major entities used inside
these declarations are described briefly here.
There are two special kinds of entities that are used to group elements: classes and mixtures. Class entities are
used to group elements that are very similar, such as "all the list
elements." Mixture entities are used to group whole element classes
(and sometimes individual elements as well) that are all supposed to be allowed
in a particular set of contexts. Classes and mixtures are described in more
detail below.
Table 2-1 shows the equivalences between the parameter
entities in V2.2.1 and the versions starting with V2.3, in approximately the
order that the original entities appear in DocBook V2.2.1. If you are new
to reading DocBook, you don't need to read this table. (Note that many new
entities have been added; these don't appear in the table.)
All of DocBook's element and attribute declaration pairs are surrounded
by marked sections (regions that work somewhat like programming "ifdefs") whose status keywords are stored in entities. Some
marked sections surround groups of related elements. In reading the DTD, you
can simply ignore all the lines that look as follows:
<![ %name.content.module; [
<![ %name.module; [
⋮
<!--end of name.module-->]]>
<!--end of name.content.module-->]]>
Class entities are used to build mixture entities and, in some cases,
are used directly in element and attribute declarations in various capacities. Table 2-2 lists all the class entities and their contents in alphabetical
order.
BMP, CGM-CHAR, CGM-BINARY, CGM-CLEAR, DITROFF,
DVI, EPS, EQN, FAX, GIF, IGES, PCX, PIC, PS, TBL, TEX, TIFF, WMF, WPG, linespecific
(this is the only class entity that contains not element names, but non-SGML
notation names)
Mixture entities combine various class entities and individual elements
for use in repeatable-OR content model groups.
Table 2-3 shows the pattern of class entities used
to build the object-level mixture entities that are used directly in content
models. An "X" means that all elements in the indicated class
are allowed.
Table 2-4 shows the pattern of class entities used
to build the inline-level mixture entities that are used directly in content
models. An "X" means that all elements in the indicated class
are allowed.
Table 2-5 alphabetically lists the entities containing
non-mixture fragments of content models, the contexts in which they are typically
used, and their contents.
Table 2-6 lists the entities that define individual
attributes and groupings of attributes.
Attribute placeholder entities with the naming pattern local.xxx.attrib are defined in every ELEMENT/ATTLIST pair's marked section. You can ignore these entity declarations.