Where to add a version to an XSD schema? Where to add a version to an XSD schema? xml xml

Where to add a version to an XSD schema?


You can use the namespace of your xsd document

<xs:schema targetNamespace="http://yourcompany/yourapp/1.0" ... >  ...</xs:schema>

As an example look at the xsd's defined by w3.org, this is how they do it. Do note that changing the version number here would usually by definition be a breaking change for any consumers of your xsd (no matter how small the actual change was, or which part of the version number you changed).

For less impacting versioning, there seems to be an agreement about putting a version attribute at your root element:

<xs:schema version="1.0.0" ...>  ...</xs:schema>


According to the schema element itself has a version attribute:

<schema  attributeFormDefault = (qualified | unqualified) : unqualified  blockDefault = (#all | List of (extension | restriction | substitution))  : ''  elementFormDefault = (qualified | unqualified) : unqualified  finalDefault = (#all | List of (extension | restriction | list | union))  : ''  id = ID  targetNamespace = anyURI  version = token  xml:lang = language  {any attributes with non-schema namespace . . .}>  Content: ((include | import | redefine | annotation)*, (((simpleType | complexType | group | attributeGroup) | element | attribute | notation), annotation*)*) </schema>

See http://www.w3.org/TR/xmlschema-1/#key-schema, "3.15.2 XML Representations of Schemas"

However, if you published the schema, then I think the best way to deal with it would be to use the target namespace. This would enforce the right version being used (but break compatibility)