Обратная совместимость пространства имен XSD - PullRequest
1 голос
/ 22 июля 2010

Мы боремся с некоторыми проблемами совместимости пространства имен. В настоящее время мы храним некоторые внешние данные в нашей базе данных в виде файлов XML с пространством имен как xmlns = "http://xyz.com/prodresponse/v2",. Недавно поставщик изменил пространство имен на xmlns =" ​​http://xyz.com/prodresponse/v4".

Проблема в том, что нам необходимо беспрепятственно работать как со старыми, так и с новыми данными пространства имен для целей нашего внутреннего приложения. Я вижу только один вариант в данный момент:

  1. Запустите сценарий SQL для преобразования существующих данных XML из версии v2 в v4.

Есть ли другие варианты?

Большое спасибо заранее

Ответы [ 2 ]

2 голосов
/ 22 июля 2010

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

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

0 голосов
/ 01 июля 2011

Я не понимаю, зачем запускать сценарий SQL для преобразования файлов XML ... Преобразования XML (XSLT) отлично справляются с этим!

FunkyPeople написал интересную статью об обработке версионных XML-файлов в Java. Они представляют несколько подходов и согласны с этим:

  • Применение последовательных таблиц стилей XSLT для преобразования входного XML в последнюю версию схемы. Почему несколько преобразований? Потому что, если вы примените только одно преобразование, вы должны будете поддерживать его, когда придет более новая версия схемы. И вам придется поддерживать все преобразования (v1 в vN, v2 в vN, v3 в В.Н., ...). Если вы применяете пошаговые преобразования одно за другим (v1 к v2, затем v2 к v3, затем v3 к v4), вам нужно будет добавлять только одно преобразование каждый раз, когда выпускается новая схема.
  • Выполнить обработку данных, относящихся только к последней версии схемы.
  • Если данные были изменены, примените обратные преобразования, чтобы вернуться к исходной версии файла.

Вы можете найти бумагу здесь или здесь .

...