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 an <elementdef> element, the defined enumeration applies to that attribute only on the element specified by <elementdef>. The enumeration does not apply to the same attribute on other elements. For example, when the element contains both <elementdef name="lomDifficulty"/> and <attributedef name="value"/>, this means that the only the value attribute on the <lomDifficulty> element is limited to the specified enumeration. The value attribute on other elements is not affected.

When the <enumerationdef> element does not contain an <elementdef> element, the attribute specified is limited to the enumeration on all elements. For example, when <enumerationdef> contains <attributedef name="value"/> but does not contain <elementdef>, the value attribute is limited to the specified enumeration for all elements.

Note: An enumeration can specify an empty category without children. In this case, no value is valid for the attribute.
Note: Whether an attribute takes a single value or multiple values from the enumeration is part of the structural definition of the element controlled by the DTD or XML Schema. That is, an attribute which is defined as CDATA may take multiple values, while an attribute defined as NMTOKEN may take only one.


Note: These models represent only the default document types distributed by OASIS. Actual content models will differ with each new document type.
Doctype Content model
subjectScheme ( (elementdef) (optional) then (attributedef) then (subjectdef) (one or more) then (defaultSubject) (optional) then (data or data-about) (any number) )

Contained by

Doctype Content model
subjectScheme subjectScheme


- 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"/>


Name Description Data Type Default Value Required?
id-atts attribute group (id, conref, conrefend, conaction, conkeyref) A set of related attributes, described in id-atts attribute group      
status The modification status of the current element. new | changed | deleted | unchanged | -dita-use-​conref-​target #IMPLIED No
base A generic attribute that has no specific purpose. It is intended to act as a base for specialized attributes that have a simple value syntax like the conditional processing attributes (one or more alphanumeric values separated by whitespace), but is not itself a filtering or flagging attribute. The attribute takes a space-delimited set of values. However, when acting as a container for generalized attributes, the content model will be more complex; see Attribute generalization for more details. CDATA #IMPLIED No
global-atts attribute group (xtrf, xtrc) A set of related attributes, described in global-atts attribute group      
class, outputclass Common attributes described in Other common DITA attributes      

Return to main page.

DITA v1.2 CS 01
Copyright © OASIS Open 2005, 2010. All Rights Reserved.