I have a constantly improvable product, which provides processing of some XML-files. For supported XML we have a namespace with a large set of XSD schemes which including each other to describe it. It also is constantly expanding to describe new features of our product. This set of schemes had published in our site in a static URL related to our namespace.
Users make many their own XML-files, manually as well as automatically generated, for and use it constantly with their instance of our product. Time to time they perform an upgrade of our product and expect old XML files will be compatible with new version of our product without any modifications.
Published schemas obviously correspond to the latest version of the product. It is suitable enough to check the correctness of an XML-file to the latest version of the product.
But!
1) How to provide a way to check correctness for an any early version and at the same time do not require the writing of the desired version into XML and do not store tonnes of schema versions in a site?
2) How will better to provide a possibility to use a local copy of XSD-schemes with tools like Visual Studio? I know only two way to mention local schemes there - add them all to IDE list by menu XML / Schema, or note it right in XML-file through xsi:schemaLocation attribute. But the first case is too difficult for all amount of used schemas and difficult to replace it with schemes of another version in neighbour folder. And the second one will mention local path in XML-file, but it will wrong when this file will be moved into other location or into another machine!
Or maybe this requirements must be solved in a completely different way and some of them far-fetched and unnecessary? What is a best-practice here?