A DTD constrains what markup is allowed in a document. mod_publisher offers partial support for XML DTDs.
Ideally, we should like to support full validation. However, that is a more expensive operation than is reasonably whilst processing on the fly. In particular, it would require backtracking, which would immediately break Apache's pipelining. This is acceptable for occasional operations (mod_annot validates in full when a document is edited), but not for normal serving of all documents. mod_publisher implements instead a more limited form of enforcement, just checking whether each element and attribute is valid according to the selected DTD.
A few cases where you might apply a DTD are:
mod_publisher doesn't load a DTD specified in the document itself, as the operation of loading and parsing a DTD is too expensive to apply to every request. Instead it applies a DTD configured in httpd.conf.
The directive MLDTD is all you need to apply a DTD:
You control the scope of the MLDTD directive in the usual way, using <VirtualHost>, <Location>, <Directory>, <Files>, or their variants.
MLDTD loads and parses DTDs at server startup, avoiding the need to do so on every request. It is recommended that you load it locally (from a file:// URL), and that you strip out external entities that are not relevant to specifying elements and attributes.
DTD processing can of course be combined with other processing supported by mod_publisher. Any elements declared as macros or handled by namespace modules take precedence over the DTD, but rewrites will apply only after DTD fixups.