You might like to read darobin's recent comments about XML Schema on use.perl. Whilst thinking about XML Schema and DTDs, take a look at Relax NG, an interesting schema language developed outside the W3C that sits somehwere between the simplicity of DTDs and the power of schemas.