Thanks Bill
Just one small addition: The last "case" in the VALIDATE SCHEMA (At least one...) "switch" statement is not only an unknown version, but also error handling in general.
When the version is identified, but the validation was not successful, the last "case" must also handle it. It would probably check for validation errors. If present, a validation happened, but with errors. If not present no validation happened, so the version is unknown.
With this strategy we just don't know what version was identified. To solve this, every version would have to set a version variable before validating the message.
By the way: this is quite a bit of policy logic to build for such a simple case. It would be nice to have an assertion that takes a collection of schemas (with different namespaces) and uses the one with the matching namespace for validation.
Regards
Stephan