While DTDs, schemas, and namespaces all rely on mechanisms which define content which is implicit rather than contained directly in the document, their sleight-of-hand is a key factor in making XML processing difficult and opaque. Some key labels - element structures - are always present directly in the document, but the namespace declaration, schema type, and attribute default information may be elsewhere. Namespace declarations may be hidden inside of DTDs as defaulted attributes, requiring multiple steps to figure out where namespace declarations originated, and making it easy to lose them in processors (XML 1.0 non-validating parsers) which don't necessarily read the external subset of the DTD. These declarations are lost to simple text-based processors which might well be useful in many markup-processing situations, and so is any information declared in a W3C XML Schema.
Notions of infosets may excite developers who prefer abstract representations to concrete syntax, and implicit information may well be available in strictly controlled circumstances, but explicit data is available to all. Every type of XML processor, including humans, has a decent chance of processing more explicitly presented labels and structures.
Monastic XML Copyright 2002 Simon St.Laurent.