When the scanner scans the attributes in a start tag, it must have a list of the defined attributes for that element. This is used to fault in defaulted and fixed attributes, to know which ones are required, and to know the their types in order to do the correct normalization.
It does not derive from the generic Enumerator template class, because there are portability issues with deriving from a template class in a DLL. It does though provide a similar enumerator interface.