Strong typing and interface control are issues of subclassing, not
inheritance. Inheritance is just a code reuse mechanism. Unlike
subclassing, it does not allow more expressive DTDs to be created (which
is, presuamably, what you are talking about). I think that we must keep
these ideas separate in our mind if we are to make progress on either
front. Their conflation is, (IMO) just a historical mistake driven by
early compiler limitations and performance considerations that do not
apply to SGML. Both concepts are useful in SGML, but they should be
separate, just as they are in most modern OO programming languages (C++,
Java, CLOS, Python, etc.), even those which conflate them in the syntax.
I described the difference in:
http://www.lists.ic.ac.uk/hypermail/xml-dev/9710/0077.html
Anyhow, you can emulate OTHER using subclassing without a first class
OTHER construct.
<!ELEMENT CITATION (name, author, date, OTHER-CIT* )>
<!ELEMCLASS OTHER-CIT> <!-- no constraints on subclasses -->
<!ELEMENT URL (#PCDATA) SUBCLASSES OTHER-CIT>
Now URLs can go in CITATONS after the date.
Paul Prescod