I have on occasion used DTDs to document time ordered interfaces to objects. It
can be a very powerful technique!
Take a really simple object interface - an object with open,close,read,write
methods.
These have a time ordering which is not captured in this:
int open();
int close();
int read();
int write();
Compare this:-
<!element interface (open,(read|write)*,close)>
Sean Mc Grath
sean at digitome dot com