Attribute Specialization Step 1: Create Domain Module Files

Step 1 is to create the attribute domain declaration as follows.

First, create a file named phase-of-moonAttDomain.ent.

In moonPhasePropsDomain.ent, create these two declarations:
<!ENTITY % phase-of-moon-d-attribute 
  "phase-of-moon 
    CDATA 
    #IMPLIED
  "
>
<!ENTITY phase-of-moon-d-att
   "a(props  phase-of-moon)"
>

The first declaration declares the @phase-of-moon attribute and puts it in a parameter entity so we can add it to the DITA-defined %selection-atts; parameter entity via the %props-attribute-extensions; configuration parameter entity in document type shells.

The second declaration is the domain declaration string for the attribute domain. It will be added to the value of the @domains attribute declared for each topic or map element type. In the value, the "props" keyword indicates that the attribute is a @props attribute specialization and not a @base attribute specialization.

You should of course add an appropriate descriptive header to the file as well as a little documentation for the attribute itself.

This is all that is required for the attribute domain module (there is no separate .mod file, as there is for element domains).