Каковы лучшие практики для XML-схем управления версиями?

Я часто должен разрабатывать XML-схемы для различных стандартных программ импорта XML-оснований. Ясно, что XML-схемы будут развиваться со временем, или они могли содержать ошибки, которые будут зафиксированы, таким образом, важно получить версию схемы и иметь некоторый механизм для привязки против определенной версии.

В настоящее время у меня есть два сценария:

  1. Ошибка найдена в рамках схемы, и все экземпляры схемы должны выполнить исправленную версию.

  2. Обновленную схему и нужно рассмотреть как предпочтительную, но старый должен также поддерживаться.

Наконец я придумал хранение информации о версии в пространстве имен схемы:

targetNamespace="http://schemas.company.com/Geodesy/2010/River.xsd"

При исправлении ошибки я фиксирую его в том же пространстве имен, но если я собираюсь обновить схему тогда, я должен создать новое пространство имен, но с добавленным месяцем обновления:

targetNamespace="http://schemas.company.com/Geodesy/2010/01/River.xsd"

И если у меня есть больше чем одно обновление за месяц, тогда просто добавляют день также:

targetNamespace="http://schemas.company.com/Geodesy/2010/01/17/River.xsd"

Вы знаете какой-либо лучший подход?

67
задан S.Lott 6 January 2010 в 16:14
поделиться

1 ответ

Это такая сложная тема, что это даже не смешно, и тот, который я провел годы, предоставляя поддержку консультации.

Есть много лучших практик , но большинство из них не работают во всех ситуациях. Например, многие защищает использование «XSD: любой», чтобы разрешить расширениями, и это просто рецепт стихийных бедствий, если разработчики отвечают за поддержание схемы, превращая его в свалку.

Вот несколько советов для вас, если вы начинаете:

  • DO не Установите второстепенный номер версии, номер в микросе, дату, дату или что-то еще раз в своем пространстве имен. Каждый раз, когда вы изменяете пространство имен, вы нарушите все приложения обработки.
  • DO Установите атрибут «версию» в документе экземпляра XML. Это позволит обрабатывать приложение или службу адаптера версии, чтобы выяснить, что она обрабатывает.
  • Сделайте Укажите политику того, что представляет собой обратное совместимое изменение, например: добавление дополнительных элементов не нарушит отправителей и не нарушит приемники либо, если они используют политику игнорирования элементов, которые они не знают (JAXB и Xmlbeans можно настроить так)

Удача!

85
ответ дан 24 November 2019 в 14:43
поделиться
Другие вопросы по тегам:

Похожие вопросы: