Step 2.7: Define @domains Attribute Contribution Entity (.ent File)

Both structural and domain modules require a .ent file in addition to the .mod file. For a structural domain (map or topic type) the .ent file simply defines the @domains attribute contribution for the topic type.

Create a file named faq-question.ent in the faq-question/dtd directory. Add a descriptive comment to the top of it indicating the name of the module and your ownership.

Add the following text entity declaration:
  <!ENTITY faq-question-att     
  "(topic concept faq-question)"

The value of the entity is the list of the ancestor topic types for the new topic type, "topic concept" in this case, followed by the name of the topic type defined by the module itself. If the faq-question topic type required any domains it would list them following its own name.

Edit the faq-question.dtd file and find the comment "TOPIC ENTITY DECLARATIONS" and insert this parameter entity declaration and reference after the comment (if you don't find this comment, find the comment "DOMAIN ENTITY DECLARATIONS" and insert the following declaration before it):
<!ENTITY % faq-question-dec     
  PUBLIC "faq-question.ent" 

Note that the publid ID is just the filename. This is just for testing purposes. For production use you would use an appropriate URN or public ID.

Find the declaration for the &included-domains; text entity and add a reference to the entity &faq-question-att; to it. It should look like this:
<!ENTITY included-domains 

Validate the test document again. It should still be valid. Check the root <faq-question> element to verify that it has a @domains attribute and that its value includes the "(topic concept faq-question)" component in addition to those for the highlight and utility domains.

At this point the new topic module is complete. All that remains is to assign appropriate public identifiers to the .mod, .ent, and .dtd files and package it as an Open Toolkit plugin so that the module can be used for production.