Improve the code in grammutil.c:check_attribute() that checks whether attributes of type ID match the Name production in the XML 1.0 spec. Ditto for NMTOKEN and NMTOKENS attributes w/ regard to Nmtoken(s) productions. As the spec for catalogs moves along, add to the simple hand-written SGML catalog parser in dtdutil.c. Internationalize the current hard-coded English-based sprintf message catalog. Best way to do this is to create (v)sprintf wrappers that extend the % notations so that they can switch the order of arguments around, if need be. That way, the argument orderings can be hardcoded into the program, and the catalog can switch them around for as needed for the current language environment. Currently the per-xml-file entity tables map entity names to strings. They should map entity names to structures that include a) the literal value of the entity, b) the replacement value, c) the line number and file where originally found, and d) flags. The flags should, among other things, have a bit set if the entity is defined externally, so we can take care of the entity part of the paragraph on standalone XML documents (spec, paragraph 2.9). Richard Goerwitz