We designed this kind of mechanism into ODBC. Because of the large number of
optional features, it is quite difficult to write truly generic ODBC code. I
believe this was justified in ODBC's case because we wanted to work with a large
variety of existing databases that had a tremendous range of capabilities.
I don't think the same situation applies to SAX. SAX is still fairly young and
we have a better chance to dictate/agree on required features, so we should
avoid optional features as long as possible. (WRT namespaces, we should either
design around them or simply require parsers to support them.)
-- Ron Bourret