Как установить xml-элемент необязательно? (Используя trang xml-> xsd-конвертер)

Я пытаюсь проверить xml, который я получаю от пользователей. Я предлагаю список параметров (которые могут время от времени меняться) в формате xml с пустыми значениями. Пользователи должны заполнить значения и загрузить их. Затем я должен проверить загруженный xml и сохранить значения в db (Mongodb).

Я попробовал trang для генерации xsd из xml файла. Он работает, но я не знаю, как указать, что пользователь может оставить некоторые из этих параметров без значений.

Я прочитал что-то о nillable = true или minoccurs = 0, который используется в xsd, однако я не хочу изменять созданный xsd вручную. Есть ли лучшее решение? Если это невозможно с trang, какой конвертер вы предлагаете? (Я использую java)

1 ответ

Использование trang для установки xml-элемента необязательно:

Вы этого не сделаете. Чтобы это правильно работало, вам понадобится инструкция "читать мой разум".

trang позволяет задать объемный контент xsd. Результирующий xsd должен быть настроен вами для правильной кодировки вашей бизнес-логики. То есть; используйте trang, чтобы получить объемный шаблон. Измените, чтобы получить информацию, которую trang не может знать в xsd.

Ты сказал:

Я предлагаю список параметров (которые могут время от времени меняться) в формате xml с пустыми значениями.

Xsd лучше соответствует этому списку параметров. Если вы обновите параметры, обновите xsd.

Я сам использовал trang. мои рекомендуемые шаги:

  1. Используйте trang на вашем шаблоне и выходе пользователя.

  2. Отредактируйте результат xsd вручную или с помощью редакторов, таких как "Редактор XML Copy".

  3. Убедитесь, что он работает с телом ввода пользователя, отредактируйте его по мере необходимости. (создание модульных тестов.)

  4. Если изменить параметр, отредактируйте xsd по мере необходимости. Если большое изменение параметра, используйте подмножества trang output для изменения xsd.

Если ваши параметры не change-, xsd не изменяется. Если вы меняете xsd для каждого пользовательского ввода... вы делаете это неправильно.

licensed under cc by-sa 3.0 with attribution.