Create a subject scheme map

You can create a subject scheme map to define a list of controlled values for the conditional processing attributes (enumerated attribute values subject scheme map).

A subject scheme allows you to create a custom set of conditional processing attribute values without having to create a DITA specialization for the attribute. In the subject scheme map you define a controlled list of values and bind them to an existing conditional processing attribute. The subject scheme map can then be added to a ditamap, which then controls what conditional processing attribute values are available and displayed for that ditamap and its child objects while the ditamap is displayed in the DITA Map view.

To create a subjectScheme map:

  1. Create a new subjectScheme by following the procedure for creating a map. In the Map template box, select the subjectScheme template that you want to use.
  2. Open the subjectScheme map in the XML editor.
    The template contains some example values you can use as a guide to create your own. For example:
    <!-- Define user values  -->
    	<subjectdef keys="user">
    		<subjectdef keys="Marketing"/>               
    		<subjectdef keys="TechPubs"/>               
    	</subjectdef>
    <!-- Bind @audience to user values  -->
    	<enumerationdef>
    		<attributedef name="audience"/>
    		<subjectdef keyref="user"/>
    	</enumerationdef>
  3. Define your list of controlled values.
    1. Locate the subjectdef element. In the keys attribute, type a name for your list of controlled values.
      For example, you would change the "user" value from the template to one of your choosing:
      <subjectdef keys="user">
      	<subjectdef keys="Marketing"/>               
      	<subjectdef keys="TechPubs"/>               
      </subjectdef>
    2. Define each value you want using the subjectdef element nested inside the parent subjectdef element.
      For example, you would change the "Marketing" and "TechPubs" values from the template to ones of your choosing as well as add as many new values as you need:
      <subjectdef keys="user">
      	<subjectdef keys="Marketing"/>               
      	<subjectdef keys="TechPubs"/>               
      </subjectdef>
  4. Bind the list of controlled values to a conditional processing attribute.
    1. Locate the enumerationdef element.
      For example:
      <enumerationdef>
      	<attributedef name="audience"/>
      	<subjectdef keyref="users"/>
      </enumerationdef>
    2. Define the conditional processing attribute you want to bind using the attributedef element. Replace the value for the name attribute with the name of the conditional processing attribute that you want to use.
      For example, you would change the "audience" value from the template with any of the conditional processing attributes.
      <enumerationdef>
      	<attributedef name="audience"/>
      	<subjectdef keyref="users"/>
      </enumerationdef>
    3. Define the name of the list to be bound to the conditional processing attribute using the subjectdef element. Replace the value in the keyref attribute with the name you defined for your controlled list of values.
      For example, you would change the "users" value from the template to the one you defined.
      <enumerationdef>
      	<attributedef name="audience"/>
      	<subjectdef keyref="users"/>
      </enumerationdef>
  5. Save and release the subjectScheme map.
  6. Add the subjectScheme map to other ditamaps as required.