Example: Constrain a domain module

In this scenario, an information architect wants to use only a subset of the elements defined in the highlighting domain. She wants to use <b> and <i,> but not <line-through>, <overline>, <sup>, <sup>, <tt>, or <u>. She wants to integrate this constraint into the document-type shell for task.

  1. She creates reducedHighlightingDomainConstraint.mod, where "reduced" is a string that characterizes the constraint.
  2. She adds the following content to reducedHighlightingDomainConstraint.mod:
    <!-- ============================================================= -->
    <!--      CONSTRAINED HIGHLIGHTING DOMAIN ENTITIES                 -->
    <!-- ============================================================= -->
    
    <!ENTITY HighlightingDomain-constraints     
      "(topic hi-d basic-HighlightingDomain-c)"
    >
    
    <!ENTITY % HighlightingDomain-c-ph     "b | i"                 >  
  3. She then integrates the constraint module into her company-specific, document-type shell for the task topic by adding the following section directly before the "DOMAIN ENTITY DECLARATIONS" comment:
    <!-- ============================================================= -->
    <!--                    DOMAIN CONSTRAINT INTEGRATION              -->
    <!-- ============================================================= -->
    
    <!ENTITY % HighlightingDomain-c-dec  
      PUBLIC "-//ACME//ENTITIES DITA Highlighting Domain Constraint//EN" 
      "acme-HighlightingDomainConstraint.mod"
    >%basic-HighlightingDomain-c-dec;
  4. In the "DOMAIN EXTENSIONS" section, she replaces the parameter entity for the highlighting domain with the parameter entity for the constrained highlighting domain:
    <!ENTITY % ph           "ph |
                             %HighlightingDomain-c-ph; |
                             %sw-d-ph; | 
                             %ui-d-ph;
                            ">
  5. 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 <task>:
    <!-- ============================================================= -->
    <!--                    DOMAINS ATTRIBUTE OVERRIDE                 -->
    <!-- ============================================================= -->
    
    <!ENTITY included-domains 
                              "&task-att;
                               &hi-d-att; 
                               &indexing-d-att;
                               &pr-d-att; 
                               &sw-d-att;
                               &ui-d-att;
                               &taskbody-constraints;
                               &HighlightingDomain-constraints;
      "
    >
  6. After updating the catalog.xml file to include the new constraints file, her work is done.