Lists Home |
Date Index |
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.