Когда вы говорите «Xslt, вероятно, не будет сокращать его», мне интересно, какой подход Xslt вы имеете в виду.
Один из подходов состоит в том, чтобы как-то преобразовать данные экземпляра для формы. (Я не уверен, как это будет работать на практике, и, возможно, именно поэтому вы сказали, что Xslt не будет работать.)
Другой подход заключается в использовании Xslt для создания настраиваемой одноразовой схемы, адаптированной к текущему состоянию данных формы. Затем вы использовали бы эту схему для построения формы. Например, преобразованная схема исключит определения для полей, которые еще не готовы к отображению. Это звучит вполне выполнимо для меня (не то, что я занимаюсь волонтерством: -)
ОБНОВЛЕНИЕ (отвечая на комментарии):
Честно говоря, я недостаточно хорошо знаю asp.net, чтобы сказать, подойдет ли его кеширование для ваших нужд. Я бы подумал, что вы не хотите кэшировать по причинам, к которым я доберусь.
Чтобы попытаться уточнить, что я имел в виду: то, что я слышал в вашем описании, заключается в том, что текущее состояние записи может повлиять на структуру формы. Например, допустимые значения для поля A могут быть ограничены значениями полей X, Y и Z, некоторые из которых могут фактически быть неизвестными и неизвестными в данный момент времени; эта двусмысленность может затруднить представление формы с помощью единой унифицированной структуры.
Я думал, что, возможно, вам не нужно ограничивать себя неизменной схемой. Если текущее состояние данных будет лучше представлено измененной схемой (например, схемой, которая отражает допустимые значения перечисления для поля A, или выбором объединения, который в настоящее время разрешен для поля B), то я предложил, возможно, преобразовать схему перед созданием формы может сделать свое дело. Что касается вашего комментария о кешировании, я был бы обеспокоен тем, что кеширование может привести к тому, что устаревшие определения форм будут обрабатываться, когда требуются более новые, из-за изменений данных и схемы. Возможно, вы могли бы избежать этого, переставляя URL-адрес пространства имен на основе текущего состояния настраиваемой схемы.
Надеюсь, это поможет.