This week's book giveaway is in the OCAJP forum. We're giving away four copies of OCA Java SE 8 Programmer I Study Guide 1Z0-808 and have Jeanne Boyarsky & Scott Selikoff on-line! See this thread for details.
There is not really a way to do that with a DTD. You can make the attribute-type a list of possible values (as you ahve done) but the values would have to also include the CVS lists of possible values, which isn't very good.