I had thought at one time that I would write this tool using the PerlSGML library for handling DTDs. However, PerlSGML would require a good deal of work (currently content models are provided as raw text).
I'm also considering using a generic grove API. As I've in parallel started to work on a grove engine as part of the BigDieSeL project, I'm currently considering implementing the necessary pieces in BigDieSeL for this. Among the advantages that this solution would bring over the perl one, are that BigDieSeL is written in Bigloo scheme, which :
as a Lisp/Scheme dialect, has facilities for handling lists and trees, which will be an plus when dealing with content models
is a compiled language
However, a grove API will not be sufficient. A data model will have to be described first, then we'll see if something already existant can be used.