Roger,
One comment for you...
> 5. If there is markup (data) needed by the
> receiver but not the producer then make it
> optional. Thus the producer can omit the
> optional markup while the receiver can add it.
By "make it optional" I assume you mean--using XSD for example--to set
minOccurs="0" in a type definition. If that is true then these are the
cases in which, in my experience, "make it optional" is appropriate:
1) Element/attribute is required in some contexts and not in others. The
context that determines whether an element/attribute is required is
applied (and sometimes determined) at the time the document is
created/modified, not at schema design-time.
2) The receiver desires, but does not require, the element/attribute.
For example, distributors reporting certain sales information to
suppliers. Suppliers want the information but distributors are reluctant
to provide it without sufficient incentives. (One could argue that this
case is a subset of #1, but I thought it worth defining separately).
I hope this helps.
Best regards,
Jim Wilson