Где добавить версию в схему XSD? - PullRequest
17 голосов
/ 26 января 2010

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

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

Как ты это делаешь?

Ответы [ 2 ]

20 голосов
/ 26 января 2010

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

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

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

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

<xs:schema version="1.0.0" ...>
  ...
</xs:schema>
9 голосов
/ 26 января 2010

Согласно самому элементу 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-представления схем"

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...