Рик,
Мне приходилось решать подобные проблемы в наших приложениях, и нашим лучшим решением было использование модульных схем.
Таким образом, вместо того, чтобы иметь Schema1 и Schema2, которые являются дубликатами друг друга, за исключением части, которая отличается, у вас есть Schema1 и Schema2, которые включают только разные ограничения, и оба импортируют общую Schema3, которая определяет общие ограничения .
Пример того, как это сделать, здесь .
Он не дает вам ни единого XSD, но сокращает дублирование, поэтому он помогает с удобством сопровождения и помогает избежать вероятности появления ошибок при большом дублировании между Schema1 и Schema2.
Недостатком является то, что людям становится немного сложнее следовать схемам, поскольку определения разбиты по разным файлам.