In SOX, we have one form of datatype declaration that specifies
an enumeration of values. So, for example:
<datatype name="color">
<enumeration datatype="NMTOKEN">
<option>red</option>
<option>green</option>
<option>blue</option>
</enumeration>
</datatype>
Now you can write:
<attdef name="colour" datatype="color" />
and the "colour" attribute is constrained to be one
of the three values enumerated in the "color" datatype.
And you can use the "color" datatype on any attribute
or any element whose content model is string.
<elementtype name="colour">
<model>
<string datatype="color" />
</model>
</elementtype>
Truth is, in this case one would probably want something
more like this:
<interface name="rgb">
<attdef name="red" datatype="RGB"><required/></attdef>
<attdef name="green" datatype="RGB"><required/></attdef>
<attdef name="blue" datatype="RGB"><required/></attdef>
</interface>
<datatype name="RGB">
<scalar minvalue="0" maxvalue="65535" decimals="0" />
</datatype>
The interface can be attached to any element as a collection
of attribute definitions.
<elementype name="colour">
<empty/>
<implements name="rgb"/>
</elementtype>
The value of each attribute must be a number (scalar) in the
range 0-65535 (0000-FFFF). So, you would write an instance thus:
<colour red="255" green="255" blue="255"/>
Regards,
Murray
Murray Maloney, Esq. Phone: (905) 509-9120
Muzmo Communication Inc. Fax: (905) 509-8637
671 Cowan Circle Email: murray@muzmo.com
Pickering, Ontario Email: murray@yuri.org
Canada, L1W 3K6