XML DTDs and W3C Schemas both have mechanisms that allow default information to be supplied at validation time. Here's an example of this from the W3C's own XHTML Schema Module Implementations for attributes of the input element:
<xs:attribute name="type" default="submit">
When XHTML instances are validated against a schema with this construct, the validation process will default the value "submit" for the type attribute, if none is present in the instance being validated.
In the early days of the company we were enthusiastic content defaulters, priding ourselves on designing DTDs that could 'take the strain' by providing default information that might otherwise have to be tediously keyed in. But now we think this is bad practice. Here's why:
1. Conceptual confusion. There's validation, and there's transformation. A schema (or DTD) should be used for validation, and transformation languages (like XSLT) for transformation. Trying to both jobs in one language confuses these concerns.
2. Defaulting models can't be expressed with RELAX NG. RELAX NG as standardised by ISO contains no mechanisms for defaulting content (unlike its OASIS-standardised predecessor). So content models which expect the schema language to provide default content won't be expressible in RELAX NG.
3. WYSINWYG. What you see is not what you get. One of the great strengths of XML (despite the W3C's wrong-headed pronouncement that XML is not meant to be read) is that you can open up an XML document in a text editor and actually see, at the text 'n' tags level, what is going on. But if a schema or DTD will be providing default content, you might not be seeing everything 'in' the instance.
4. Having to take the Schema everywhere. Relatedly, if the DTD or schema provides default information you need to make sure that every time its governed instances are parsed, that DTD or schema needs to be present, as such document are not standalone. This is an overhead.
5. The Namespace problem. See here for reasons why providing Namespace support through content defaulting can be tricky.
6. Saving typing is sooooo over. Content defaulting, like tag minimisation features, emerges from an earlier era where saving keystrokes and precious VDU screen real estate were important concerns. These things are generally less important now, and - if they are - there a better tools for the job than content-defaulting schemas or DTDs.
Okay, so that's six reasons. Under-promising and over-delivering again 