There are certain rules that apply to the
design and implementation of constraints.
@domains
attribute contribution
-
Each constraint that is integrated into a DITA
document type MUST be
declared in the @domains
attribute for each structural type that is integrated into
the document type. For
DTDs, the contribution for the @domains
attribute is specified in the constraint module file; for
XSD and RELAX NG, the contribution to the @domains
attribute is specified
directly in the document type shell.
- Content model
-
The content model for a
constrained element must be at least as
restrictive as the unconstrained content model for
the element.
The content model and attributes of an element
can be constrained by only one constraint module. If two
constraint modules exist that constrain the content model or
attributes for a specific element, those two modules must be replaced with a new
constraint module that reflects the aggregation of the two
original constraint modules.
- Domain constraints
-
When a domain module is integrated into a
document type shell, the base domain element can be omitted
from the domain extension group or parameter entity. In such
a case, there is no separate constraint declaration, because
the content model is configured directly in the document
type shell.
A domain module can be
constrained by only one constraint module. This means that
all restrictions for the extension elements that are defined
in the domain must be contained within that one constraint
module.
- Structural constrains
-
Each constraint module may constrain elements
from only one vocabulary module. For example, a single constraint module that
constrains <refsyn>
from reference.mod and
constrains <context>
from task.mod is not
allowed. This rule maintains granularity of reuse
at the module level.
Constraint modules that restrict different
elements from within the same vocabulary module can be
combined with one another. Such combinations of constraints
on a single vocabulary module have no meaningful order or
precedence.
--
Best,
Kris
Kristen James Eberlein
Chair, OASIS DITA Technical Committee
Principal consultant, Eberlein Consulting
www.eberleinconsulting.com
+1 919 682-2290; kriseberlein (skype)