Schema Namespace name, schemaLocation, and Schema Versioning

I've read the Best Practice, debated the pros and cons, and am still not
confident that I understand all of the ramifications: How should I associate
evolving schema version numbers into my namespace name? Into my
schemaLocation? 

I have a set of schemas, all under the same namespace name, that will
certainly change over time.

Some changes will be major, some minor, some "trivial" (with numbering
reflecting the various levels, e.g., 2.3.1).

I know that if I want validators to validate the content, without writing
custom code that inspects the xml doc's content, the doc's schemaLocation
must reflect the specific version information (e.g.,
http://www.MyStandard.org/2.3.1/xyz.xsd).

I know that each schema change could affect the content in the instance
documents (changing the wire signature), and/or the names and/or structure
of the schema, which could adversely affect those schemas that import or
include the altered schema.

As such, each change reflects a different version of the schema (and thus a
new schemaLocation, e.g., http://www.MyStandard.org/2.3.1/xyz.xsd). 

But does each change warrant a new namespace name?

How much of a change to the schema truly warrants a change to the namespace
name? (Some say: "any change." Some say: "only non-backward-compatible
changes," whatever those might be).

What are the ramifications of fine-grained versioning in the schema
namespace (e.g., http://www.MyStandard.org/2.3.1/xyz.xsd)?

What are the ramifications of course-grained versioning in the schema
namespace (e.g., http://www.MyStandard.org/2.3/xyz.xsd)?

With well-componentized schemas, I understand that every change to the
schema would require a change to the namespace declaration in every included
schema, in order for namespace names to match. With a good configuration
management system, this can be supported trivially. For those who don't use
these tools, this can be tedious and error prone.

I can tell you at the moment, I'm leaning toward having three levels of
version numbering, and only reflecting major and minor version numbers into
the namespace name. But as I said, I'm not confident about the distinction
between "minor" and "trivial," nor am I convinced that there would be no
adverse impacts on the schemas' deployability/usability.

From a pure xml standpoint, my current approach will work, although I'm
still unsure whether any change, no matter how trivial, would represent both
an identical vocabulary (in the instances) and an identical meta-vocabulary
(in/among the schemas).

But from a practical, production perspective, I am unsure how the
schema-consuming middleware would accommodate the changing namespace names.
Certainly, new maps would have to be created for each element/attribute in
each new namespace name. Not so for most of the content, if the namespace
name was held stable and the predominant changes were extensions.

So what's your take ?( I know this is more of a philosophical rather than
pure technical question). When should a namespace name change to reflect
changes in the schemas? What granularity do you recommend? What practices
are so common that I should just accept them, even if they don't fully
answer my (many) questions?

Where can I look, beyond the xfront site, to get insight into common
practice, ramifications, etc.? Is this question better asked under the
XML-Dev list?

Thanks,

Mark

Mark Feblowitz                                   	
XML Architect
       [t]   617.715.7231                                     	
       [f]   617.495.0188
Frictionless Commerce Incorporated 	
       [e]  mfeblowitz@frictionless.com <mailto:mfeblowitz@frictionless.com>

       [w] http://www.frictionless.com <http://www.frictionless.com> 
       [m] 400 Technology Square, 9th Floor
             Cambridge, MA 02139 
Open Applications Group Incorporated
       [e]  mfeblowitz@openapplications.org
<mailto:mfeblowitz@openapplications.org> 
       [w] http://www.openapplications.org <http://www.openapplications.org>

Received on Monday, 15 July 2002 15:09:14 UTC