A couple of quick questions....
In the case of option 1, the any type:
My concern around having something wide open is interop and
portability. If I can essentially throw anything in there, I'm
expecting something, somewhere outside of the specification to be able
to consume it and understand the semantics. What are the use cases
supporting this? Do we really want to introduce a vanilla "envelope"?
It may be necessary, especially in the case of extensions, where you
have to pass something else along with the result. But should this be
an any? Regardless, we should have language that says what gets passed
should be part of an incubating/approved extension with a publicly
available definition of semantics etc....
In the case of option 2, the collection...
Are we sure these are the complete set of metadata about the response
that would come back? Similar situation as above... What if I'd like
to add a "willExpireOn" field? This could be optional, and for clients
that understand it, they can choose to use leverage it, for others,
it's safe to ignore. To do this now, I'm forced into using Option1,
and then somehow telling everyone that "hey, this is really option 2
but ignore the extra fields if you want..."
So recognizing that XML schema can be a pain, I'm not one for trying
to over engineer anything.... That said, if we think the concerns
above are valid, perhaps we can think of some way to address them.
-Mark W.