The dtd actually enforces an order on the tags (comma seperated). The table-name tag should come last in your example.
I had actually just figured that out. I'm not used to dealing with a DTD. A lot of the stuff we do just uses well-formed XML.