Hi YC,
Taking your points in order:
(1) Agreed, it is best practice to produce a (user specified) scheme declaration for each of messageId, inReplyTo, sentBy, sentTo
(2) Elements sentBy, sentTo, copyTo are instances of type MessageAddress, having scheme attribute messageAddressScheme whose type is xsd:anyURI, in common with other coding schemes.
(3) In general, it is good practice to validate messages from external sources, to ensure that they meet the base requirements with respect to structure & data content.
(4) Not sure if I understood your question about validating “to check if any changes have been made” – can you elaborate, please?
Coding scheme declarations are not schema-validated by design, allowing users the ability to produce their own scheme declarations. Where it is necessary to distinguish between different coding schemes, this should be performed by application logic as a supplementary phase to schema validation. In some interfaces, the message address coding scheme(s) can be understood implicity from context – although this is by no means universal.
A more detailed explanation of the distinction between coding schemes and schema enumerations and their use cases can be found in the FpML Architecture Specification.
Best regards,
Harry