Example: Redefine the content model for the <topic>
element
In this scenario, an information architect for Acme, Incorporated wants to redefine the
content model for the topic document type. She wants to omit the
<abstract>
element and make the <shortdesc>
element required; she also wants to omit the <related-links>
element and
disallow topic nesting.
Example
- She creates a .mod file using the following naming conventions: qualiferTagnameConstraint.mod, where qualifer is a string the describes the constraint, and Tagname is the element type name with an initial capital. Her contraint module is named acme-TopicConstraint.mod.
- She adds the following content to
acme-TopicConstraint.mod:
<!-- ============================================================= --> <!-- CONSTRAINED TOPIC ENTITIES --> <!-- ============================================================= --> <!-- Declares the entity for the constraint module and defines --> <!-- its contribution to the @domains attribute. --> <!ENTITY topic-constraints "(topic basic-Topic-c)" > <!-- Declares the entities referenced in the constrained content --> <!-- model. --> <!ENTITY % title "title"> <!ENTITY % titlealts "titlealts"> <!ENTITY % shortdesc "shortdesc"> <!ENTITY % prolog "prolog"> <!ENTITY % body "body"> <!-- Defines the constrained content model for <topic>. --> <!ENTITY % topic.content "((%title;), (%titlealts;)?, (%shortdesc;), (%prolog;)?, (%body;)?)" >
- She then integrates the constraint module into her document-type shell for topic by
adding the following section above the "TOPIC ELEMENT INTEGRATION"
comment:
<!-- ============================================================= --> <!-- CONTENT CONSTRAINT INTEGRATION --> <!-- ============================================================= --> <!ENTITY % topic-constraints-c-def PUBLIC "-//ACME//ELEMENTS DITA Topic Constraint//EN" "acme-TopicConstraint.mod"> %topic-constraints-c-def;
- She then adds the constraint to the list of domains and constraints that need to be
included in the value of the
@domains
attribute for<topic>
:<!-- ============================================================= --> <!-- DOMAINS ATTRIBUTE OVERRIDE --> <!-- ============================================================= --> <!ENTITY included-domains "&hi-d-att; &ut-d-att; &indexing-d-att; &topic-constraints; " >
- After updating the catalog.xml file to include the new constraints file, her work is done.