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:
-
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.
-
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>
-
Define your list of controlled values.
-
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>
-
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>
-
Bind the list of controlled values to a conditional processing attribute.
-
Locate the
enumerationdef
element.
For
example:
<enumerationdef>
<attributedef name="audience"/>
<subjectdef keyref="users"/>
</enumerationdef>
-
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>
-
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>
-
Save and release the subjectScheme map.
-
Add the subjectScheme map to other ditamaps as required.