The <enumerationdef> element identifies one attribute and one or more categories that contain the controlled values for the enumeration. The @type attribute has a default value of "keys".

When the <enumerationdef> element contains both an <attributedef> and an <elementdef> element, the enumeration applies to the specified attribute only on the specified element. The enumeration does not apply to the attribute on other elements. For example, when the <enumerationdef> element contains both <attributedef name="value"/> and <elementdef name="lomDifficulty"/>, only the @value attribute on the <lomDifficulty> element is limited to the specified enumeration. The possible values for the @value attribute on other elements are not affected.

When the <enumerationdef> element contain an <attributedef> element but no <elementdef> element, the controlled set of values bound to the attribute apply to all elements. For example, when <enumerationdef> contains only <attributedef name="value"/>, the @value attribute is limited to the specified enumeration for all elements.

When the <enumerationdef> element is empty, no value is valid for the attribute.

Whether an attribute takes a single value or multiple values from the enumeration is part of the structural definition of the element. An attribute that is defined as CDATA can take multiple values, while an attribute defined as NMTOKEN can take only one.

Content models

See appendix for information about this element in OASIS document type shells.


- map/topicref subjectScheme/enumerationdef


In this example, enumerations are specified for the @platform and @otherprops attributes. Note that the enumeration identifies a category of values; the values within the category are valid, while the category itself is not a valid value. For example, in the code sample here, the @platform attribute is associated with the enumeration for the category "os"; all values within the "os" category are thus valid on the @platform attribute, while the value "os" itself is not.

  <!-- Pull in a scheme that defines unix OS values -->
  <schemeref href="unixOS.ditamap"/>
  <!-- Define new OS values that are merged with those in the unixOS scheme -->
  <subjectdef keys="os">
    <subjectdef keys="linux"/>
    <subjectdef keys="mswin"/>
    <subjectdef keys="zos"/>
  <!-- Define application values -->
  <subjectdef keys="app" navtitle="Applications">
    <subjectdef keys="apacheserv" href="subject/apache.dita"/>
    <subjectdef keys="mysql"      href="subject/sql.dita"/>

  <!-- Define an enumeration of the platform attribute, equal to
       each value in the OS subject. This makes the following values
       valid for the platform attribute: linux, mswin, zos -->
    <attributedef name="platform"/>
    <subjectdef keyref="os"/>
  <!-- Define an enumeration of the otherprops attribute, equal to
       each value in the application subjects.
       This makes the following values valid for the otherprops attribute:
       apacheserv, mysql -->
    <attributedef name="otherprops"/>
    <subjectdef keyref="app"/>


The following attributes are available on this element: ID attribute group, @status and @base from Metadata attribute group, @outputclass, Debug attribute group, and @class (Not for use by authors).

Was this helpful?