Что такое схема XML и как она проверяет корректность документа
Что проверяют
Умеете ли вы задать требования к обмену документами так, чтобы их проверяла машина, а не человек глазами. Для аналитика схема это часть постановки на интеграцию: она фиксирует контракт между системами и заранее снимает спор о том, чей формат правильный.
Как отвечать
Схема описывает, каким должен быть документ: какие элементы и атрибуты допустимы, в каком порядке, сколько раз может встретиться каждый (minOccurs, maxOccurs), какого типа значение и какие у него ограничения (шаблон, перечень допустимых значений, границы числа, длина строки). Основной язык это XSD, сам записанный в XML. DTD старше, не знает типов и пространств имён.
Проверка идёт на двух уровнях, и их стоит развести. Документ корректно оформлен, если соблюдён синтаксис XML: теги закрыты, вложенность не нарушена. Документ валиден, если он вдобавок соответствует схеме. Валидатор возвращает не «да или нет», а перечень нарушений с указанием места, и именно это должно попадать в сообщение об ошибке интеграции.
Отдельно проговорите границу. Схема проверяет форму, но не смысл: что сумма строк совпадает с итогом, что договор существует, что дата окончания позже даты начала, она сказать не может. Такие правила описываются отдельным списком и проверяются прикладным кодом.
Где спотыкаются
Ставят знак равенства между валидным документом и правильным. Документ проходит схему и при этом содержит несуществующего контрагента или нулевую сумму, поэтому в постановке всегда нужен второй список правил с кодами ошибок.
Не описывают версионирование. Новый обязательный элемент ломает всех, кто уже шлёт документы, а совместимая эволюция выглядит иначе: элемент необязательный, версия вынесена в пространство имён, есть период, когда принимаются обе.
Путают «элемента нет», «элемент пустой» и «значение неизвестно». Это три разных состояния, и если в постановке не выбрано одно, каждая сторона реализует своё, а расхождение вскроется на приёмке.