Fundamental problem of DTD is its incompatibility with XML Namespaces and
lack of modeling expressiveness -- some constructs cannot be constrained by DTD.
Direct, more powerful, but also more complex modeling language is W3C XML Schema.
Powerful and simpler alternatives of XML Schema are e.g. RelaxNG. (on Wikipedia:RELAX_NG)