Эти инструменты могут послужить хорошей отправной точкой, но они не являются заменой для размышлений о том, какими должны быть фактические ограничения схемы. Вы получаете возможность для двух видов ошибок: (1) разрешить XML, который не должен быть разрешен, и (2) запретить XML, который должен быть в порядке.
В качестве примера представьте, что вы хотите вывести XSD из нескольких тысяч записей о пациентах, которые содержат тег «пол» (я раньше работал с программным обеспечением для медицинских карт). Инструмент, скорее всего, встретит «M» и «F» в качестве значений и может сделать вывод, что элемент является перечислением. Тем не менее, другие допустимые (хотя и редко используемые) значения: B (оба), U (неизвестно) или N (нет). Это редкость, конечно. Таким образом, если бы вы использовали свою производную схему в качестве входного валидатора, она работала бы хорошо, пока пациент с несколькими половыми органами не был бы помещен в больницу.
И наоборот, чтобы избежать этой ошибки, генератор XSD может не добавлять ограничения перечислимых типов (я не могу вспомнить, как они называются в схемах), и ваше приложение будет работать хорошо, пока не встретит ошибочную запись с полом = X.
Итак, будьте осторожны. Лучше всего использовать эти инструменты только в качестве отправной точки. Кроме того, они имеют тенденцию создавать подробные и избыточные схемы, потому что они не могут понять шаблоны так же, как люди.