Эрик, Алекс и др.
Я думаю, что здесь есть два вопроса:
Первая проблема - это вопрос Tag Soup и очистки, которая происходит OOTB: пустые теги преобразуются в одноэлементные теги, которые при использовании / отправке клиентскому браузеру, как разметка, «исправляются» браузерами, такими как firefox, но из-за потеря точности, они делают неправильные вещи.
Отключение этой очистки помогает в этом случае, но только для этой проблемы не совсем правильный ответ, потому что мы убираем функцию безопасности и правильно сформированную функцию разметки ... поэтому может потребоваться некоторая корректировка обработка по крайней мере некоторых пустых тегов (кроме превращения их в недопустимые одноэлементные теги.)
Все это подводит нас ко второму аспекту: мы всегда хотим, чтобы эти функции были в игре? Наш вариант использования говорит нет. Мы хотим, чтобы пользователь мог выкладывать любую разметку, которую он хочет, недействительной или нет. Мы не помещаем форму в приложение, которое должно защищать пользователя от перекрестного кодирования, мы создаем инструмент, который позволяет пользователям редактировать веб-страницы - поэтому мы отключили очистку.
Но отключение очистки оптом? Что ж, важно, что мы можем сделать это, если это то, к чему призывает наш сценарий использования, но у нас есть реализация «все или ничего». Было бы неплохо иметь возможность определять стратегии для очистки. Сделайте эту функцию подключаемой. Например:
* В XML-конфигурации системы определите «карту» имен конфигурации с именами классов, которые реализуют данную стратегию. В XForm Def автор будет указывать имя с карты.