Example: Restrict the content model for
the <topic>
element using DTD
This section is non-normative.
In this scenario, the DITA architect for
Acme Incorporated wants to redefine the content model for the topic
document type. They want to omit
certain elements, make the <shortdesc>
element required, and disallow topic nesting.
Specifically, the DITA architect wants to redefine the content model in the following ways:
- Remove
<abstract>
- Require
<shortdesc>
- Remove
<related-links>
- Remove the
%task-info-types;
entity in order to disallow topic nesting
- The DITA architect creates a constraint module: acme-TopicConstraint.mod.
- They add the following content to
acme-TopicConstraint.mod:
<!-- ============================================================= --> <!-- CONSTRAINED TOPIC ENTITIES --> <!-- ============================================================= --> <!-- Declares the entities referenced in the constrained content --> <!-- model. --> <!ENTITY % title "title"> <!ENTITY % shortdesc "shortdesc"> <!ENTITY % prolog "prolog"> <!ENTITY % body "body"> <!-- Defines the constrained content model for <topic>. --> <!ENTITY % topic.content "((%title;), (%shortdesc;), (%prolog;)?, (%body;)?)" >
- They add the constraint module to the catalog.xml file.
- They then integrate the constraint module into
the document-type shell for topic by adding the following content to the "Element-Type Configuration
Integration
section:
<!-- ============================================================= --> <!-- ELEMENT-TYPE CONFIGURATION INTEGRATION --> <!-- ============================================================= --> <!ENTITY % topic-constraints-c-def PUBLIC "-//ACME//ELEMENTS DITA Topic Constraint//EN" "acme-TopicConstraint.mod"> %topic-constraints-c-def;
- They check their test topic to ensure that the content model is modified as expected.