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.
Inheritance
- map/topicref subjectScheme/enumerationdef
Example
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.
<subjectScheme> <!-- 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"/> </subjectdef> <!-- Define application values --> <subjectdef keys="app" navtitle="Applications"> <subjectdef keys="apacheserv" href="subject/apache.dita"/> <subjectdef keys="mysql" href="subject/sql.dita"/> </subjectdef> <!-- 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 --> <enumerationdef> <attributedef name="platform"/> <subjectdef keyref="os"/> </enumerationdef> <!-- 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 --> <enumerationdef> <attributedef name="otherprops"/> <subjectdef keyref="app"/> </enumerationdef> </subjectScheme>
Attributes
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).