I regard DTD as an anachronism - unrelated to modern XML technology (XSD, XPath, XQuery, XSLT) and without future - which I would avoid.
DTDs still have their uses, and this one is reasonable enough: here it's more about conveniently declaring entities than it is about validation, where I agree they have their limitations.
Personally, for this specific use-case, I'd rather just use a built-in feature that any conformant XML parser will respect.
But if you need more flexibility, it may be worth investing the time in a tool such as the one Hans proposes.
Best wishes,
Andrew