Select the topic nesting model

While the DITA model does not encourage nested topics, it does support them by editing your document shells to allow, say, a concept to contain another concept. By default, the DITA CMS is set up to allow nested topics. However, if your content model does not include nested topics, you can configure the CMS to disallow them.

  1. Check out and open CustomerDitabase.dtd.
  2. Find the Topic Nesting Override section.
    <!-- ============================================================= -->
    <!--                    TOPIC NESTING OVERRIDE                     -->
    <!-- ============================================================= -->
    
    <!--                    Redefine the infotype entity to exclude 
                            other topic types and disallow nesting     -->
    <!ENTITY % glossentry-info-types 
                            "no-topic-nesting"                           >
    <!ENTITY % info-types   "topic | concept | task | reference |
                             glossentry | glossgroup"                    >

    In this section, there are two nestings defined: glossentry-info-types and info-types. For info-types, the default nesting is either one of topic, concept, task, reference, glossentry or glossgroup. This nesting applies to all topic types (including specializations such as referable-content). In this section, there is also a specific nesting defined (glossentry-info-types) that specifies that a glossentry cannot have nested topics. (no-topic-nesting is a special element defined for this purpose.) The type-specific nesting (in this case, glossentry-info-types) always overrides the info-types definition. You can define a type-specific nesting for any topic type(s).

  3. To disallow all topic nesting, continue to step 4. To disallow specific nesting, continue to step 5.
  4. Disallow all topic nesting: edit the info-types entity as shown:
    <!ENTITY % info-types   
                            "no-topic-nesting"                           >

    Continue to step 6.

  5. Disallow specific topic nesting: add additional exception entities as appropriate.

    In this example, we will disallow task nesting but leave it enabled for all other topic types (except glossentry).

    <!-- ============================================================= -->
    <!--                    TOPIC NESTING OVERRIDE                     -->
    <!-- ============================================================= -->
    
    <!--                    Redefine the infotype entity to exclude 
                            other topic types and disallow nesting     -->
    <!ENTITY % glossentry-info-types 
                            "no-topic-nesting"                           >
    <!ENTITY % task-info-types 
                            "no-topic-nesting"                           >
    <!ENTITY % info-types   "topic | concept | task | reference |
                             glossentry | glossgroup"                    >

    Or, we can turn the scenario around and disallow all topic nesting but enable it for just one topic type, such as task. In this example, we disallow topic nesting for the general info-types entity but we then allow it for the specific task-info-types entity. (We can delete the glossentry-info-types entity altogether because it is redundant in this scenario.) Here, the task-info-types entity allows nesting a task within a task but no other nesting is allowed:

    <!-- ============================================================= -->
    <!--                    TOPIC NESTING OVERRIDE                     -->
    <!-- ============================================================= -->
    
    <!--                    Redefine the infotype entity to exclude 
                            other topic types and disallow nesting     -->
    <!ENTITY % task-info-types 
                            "task            "                           >
    <!ENTITY % info-types   "
                             no-topic-nesting"                           >
  6. Save, close, and check in CustomerDitabase.dtd.