Где добавить версию в схему XSD?

В приложении, в котором я работаю, есть выход XML, который соответствует схеме XSD. По мере добавления функций в приложение XSD изменяется, и я хотел бы отметить версию схемы в XSD файле.

Возможно, мне что-то не хватает, но я не нашел встроенного способа пометить версию схемы.

Как вы это делаете?

Ответы

Ответ 1

Вы можете использовать пространство имен вашего документа xsd

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

В качестве примера рассмотрим xsd, определенный w3.org, вот как они это делают. Обратите внимание, что изменение номера версии здесь, по определению, будет критическим изменением для любого потребителя вашего xsd (независимо от того, насколько маленьким было реальное изменение или какая часть номера версии вы изменили).

Для менее влиятельного управления версиями, похоже, существует соглашение о добавлении атрибута версии в ваш корневой элемент:

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

Ответ 2

В соответствии с элементом schema сам имеет атрибут version:

<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>

См. http://www.w3.org/TR/xmlschema-1/#key-schema, "3.15.2 XML-представления схем"

Однако, если вы опубликовали схему, я думаю, что лучший способ справиться с ней - использовать целевое пространство имен. Это обеспечит использование правильной версии (но нарушает совместимость)