Step 2-3. Create New .mod File and Integrate Into Shell

Find the file concept.mod in the regular DITA DTD distribution and copy it to faq-question.mod in your faq-questions/dtd directory.

Edit this file as follows:
  • Delete the header comments and replace them with comments that indicate this module DTD is owned by you and contains the DTD declarations for the FAQ question module.
Now edit the faq-question.dtd file (the document type shell DTD) and integrate the module as follows:
  1. Find the declaration for the %concept-typemod; entity declaration.
  2. After this declaration, add the following declaration and reference to the faq-question topic type module:
    <!ENTITY % faq-question-typemod 
      SYSTEM "faq-question.mod"                                                        
     >                                                     
    %faq-question-typemod; 
The topic element integration section of the faq-question.dtd shell should now look like this:
<!-- ============================================================= -->
<!--                    TOPIC ELEMENT INTEGRATION                  -->
<!-- ============================================================= -->

<!--                    Embed topic to get generic elements        -->
<!ENTITY % topic-type   PUBLIC 
"-//OASIS//ELEMENTS DITA Topic//EN" 
"topic.mod"                                                          >
%topic-type;


<!--                    Embed concept to get specific elements     -->
<!ENTITY % concept-typemod 
                        PUBLIC 
"-//OASIS//ELEMENTS DITA Concept//EN" 
"concept.mod"                                                        >                                                     
%concept-typemod;

<!ENTITY % faq-question-typemod 
  SYSTEM "faq-question.mod"                                                        
 >                                                     
%faq-question-typemod;

Note that I didn't bother to define either a public identifier or a URN for the %faq-question-typemod; parameter entity. This is to keep things simple. Later, once we've got everything working, we can replace the relative URL with a URN and set up the necessary catalog mappings.

Trying validating your test document again. Now you should get errors to the effect that the "concept" element type is declared multiple times, as well as the same messages about the FAQ-specific element types not being declared. This indicates that we've got the module integrated with the shell correctly.