This a slightly modified version of a message I posted to XML-DEV mailing list.
While reading through the registered namespace prefix thread, I had a thought: use of schemas (and DTDs) so far has concentrated primarily from the XML producer's perspective and not from the XML consumer's perspective. Furthermore, we use a schema as a contract between XML producers and consumers, binding them tightly and thus making it difficult for either party to evolve and extend the contract independently.
Using schemas as a contract between two highly independent groups (producers and consumers) seems unwieldy because the two groups must walk in sync as the schema evolves. What if the contract is divided into two parts, promise and expectation? An XML producer's version of the schema promises precisely the content and structure of the produced XML documents. An XML consumer's version of the schema specifies the content and structure of the XML documents the consumer expects. Promises and expectations don't have to match exactly to function.
From the consumer's perspective, all it really cares about is that its getting everything it expects. So the producer can add or remove elements if the consumer doesn't care about those elements. Structures can be changed also if the change doesn't violate consumer's expectations.