If you need an example of what you should NOT do when you write a DTD, take a look at xml-vcard. Don't miss the TEL element definition, where a telephone number can be for home, work, pager, fax, voice, isdn, modem, and tons of stuff at the same time. This thing drives me nuts. It's so ugly design it should be obsoleted immediately. I have rarely seen such a failure designing a DTD...