You missed
XML::LibXML::Dtd, LibXML requires you to install the c library libxml2, but its the most complete XML creator/parser out there, as far as I can see. That's what I picked when I was looking for a DTD Parser. I can't remember now what the two you mention were like, but I know I found LibXML more useful.
(And started to create a DTD verifier/generator, since apparently there is/was a complete lack of those too.)
C.