Не сохраняйте его, но если вы создаете обратно-совместимый HTML, вам нужно сообщить процессору XSLT, что HTML-совместимый XHTML - это то, что вам нужно, а не универсальный XML с самозакрытием:
<xsl:output method="xhtml"/>
К сожалению, метод вывода ‘xhtml ’- это расширение XSLT 2.0, которое не поддерживается в .NET XslTransform, поэтому вместо него вам придется использовать старый добрый унаследованный HTML-код:
<xsl:output method="html"/>
(и соответствующий HTML 4.01 DOCTYPE вместо XHTML.)
Размещение некоторого фиктивного контента в <script>
может решить вашу непосредственную проблему, но могут быть и другие места, где метод вывода по умолчанию «xml» будет приводить к неподходящей разметке для устаревших браузеров, таких как IE.
Re: комментарий. Хм ... ты прав! Метод вывода «html» не создает корректный HTML; метод вывода «xhtml» не создает XHTML, совместимый с Приложением XHTML. Более того, «html» включает в себя такие положения, как не экранирование «<» и деэкранирование древнего и безубыточного Netscape 4 создайте '& {...}', которая возьмет вашу рабочую разметку и сделает ее недействительной. </p>
Таким образом, изменение метода вывода совершенно бесполезно, и единственный способ создать работающий HTML с XSLT:
а. взломать каждый случай появления неподходящего самозакрывающегося тега (вероятно, их может быть намного больше, чем только этот скрипт), или
б. пост-процесс с чем-то вроде HTMLTidy.
Как печально и неаккуратно, что это не было решено даже в XSLT 2.0.