Enumerated types in XML Schema are a special case of definition by restriction. They are
described by using the enumeration
facet which is supported by
all XML Schema primitive types. As with enumerated types in most modern programming
languages, a variable of this type can only have one of the specified values.
The syntax for defining an enumeration is shown in Example 2.16.
Example 2.16. Syntax for an enumeration
<simpleType name="EnumName
"> <restriction base="EnumType
"> <enumeration value="Case1Value
"/> <enumeration value="Case2Value
"/> ... <enumeration value="CaseNValue
"/> </restriction> </simpleType>
EnumName
specifies the name of the enumeration type.
EnumType
specifies the type of the case values.
CaseNValue
, where N
is any number
one or greater, specifies the value for each specific case of the enumeration. An
enumerated type can have any number of case values, but because it is derived from a
simple type, only one of the case values is valid at a time.
For example, an XML document with an element defined by the enumeration widgetSize
, shown in Example 2.17,
would be valid if it contained <widgetSize>big</widgetSize>,
but it would not be valid if it contained
<widgetSize>big,mungo</widgetSize>.
Example 2.17. widgetSize enumeration
<simpleType name="widgetSize"> <restriction base="xsd:string"> <enumeration value="big"/> <enumeration value="large"/> <enumeration value="mungo"/> </restriction> </simpleType>