Expansion module rules
- Specialization base of expanded elements
-
Elements that are added to content models by expansion models must be specializations of existing elements that are permitted in the original content model.
- Content model of expanded elements
-
Elements that are added to content models by expansion models must be allowed only where their specialization base is allowed.
For example, when creating an expansion model that adds a specialization of
<data>
to<ol>
, the specialization of<data>
must only be allowed before any<li>
elements, as that is the only place that the<data>
element is allowed in the content model for an ordered list. - Ordinality of expanded elements
-
Elements that are added to content models by expansion modules must not violate the ordinality of the original content model. If the original content model requires a child element to occur at least once, then the expanded content model cannot break this requirement. If the original content model only permits a child element to occur once, then the expanded content model cannot break this requirement.
For example, in the expansion module that adds a specialization of
<data>
to<ol>
, the redefined content model for<ol>
cannot make the<li>
element optional.However, an expansion module that adds a specialization of
<li>
(<listIntro>
) to<ol>
can redefine the content model of<ol>
in the following ways:- Make
<listIntro>
the first child element and be required - Make
<li>
the second child element and optional
When a DITA topic affected by this expansion module is generalized, the resulting markup would be valid; the content model of
<ol>
would be respected. - Make
- Aggregation of constraint modules
-
The content model of an element can be modified by either of the following element-configuration modules:
- Constraint module
- Expansion module
For any document-type shell, the content model of an element can only be modified by a single element-type configuration module. If multiple constraints or extensions need to be applied to a single element, the element configurations must be combined into a single module that reflects all the constraints and expansions that were defined in the original separate modules.