Отображение страниц, совместимых с xhtml, с помощью XSLT не будет правильно отображаться после встроенного блока javascript.

В настоящее время я нахожусь в процессе обновления (много) старого кода xsl + html для отображения кода, совместимого с xhtml, но сталкиваюсь с проблемой, когда страницы включают встроенный javascript. Часть javascript может быть удалена из встроенных и помещена в связанные файлы js.

Однако есть ряд мест, где элементы xsl используются внутри javascript.

При просмотре вывода в браузере кажется, что рендеринг останавливается там, где в источнике появляется javascript (источник генерируется нормально).

Я пробовал все обычные хаки CDATA и xsl:comment вокруг этих блоков javascript, но все равно тот же результат.

Любая помощь в этом вопросе будет оценена по достоинству. Пожалуйста, спросите, если вам нужна дополнительная информация.


person Rob Wood    schedule 16.07.2010    source источник
comment
не могли бы вы вставить пример кода?   -  person bluesmoon    schedule 16.07.2010
comment
Не могли бы вы привести небольшой пример: документ XML, XSLT, результат и объяснение, что не так)?   -  person Dimitre Novatchev    schedule 16.07.2010
comment
В поле поиска введите [xslt] [javascript]. Вы получаете: stackoverflow.com/questions/435005 / и stackoverflow.com/questions/3035058/ и даже больше. Если они не охватывают вашу проблему, спросите с входным образцом и желаемым результатом.   -  person    schedule 16.07.2010
comment
Вы предоставляете результат преобразования XSLT как текст/html или как приложение/xhtml+xml? Если вы используете text/html, вы должны следовать правилам w3.org/TR. /xhtml1/#guidelines, и я не знаю ни одного процессора XSLT 1.0, поддерживающего вывод XHTML таким образом. XSLT 2.0 имеет метод вывода «xhtml», который полезен для вывода XHTML с таблицей стилей XSLT и для обработки вывода в виде текста/html.   -  person Martin Honnen    schedule 16.07.2010


Ответы (2)


Попробуйте запустить преобразованную страницу через валидатор XML. Это, по крайней мере, скажет вам, является ли это соответствием XML или проблемой совместимости браузера. Не видя преобразованного кода, трудно диагностировать, что происходит. Ваша проблема может быть связана с ошибкой Javascript или недопустимым XML. Кроме того, сам браузер может постепенно обрабатывать XSLT и выполнять рендеринг, поскольку вы не указали, выполнялось ли преобразование до рендеринга или как часть рендеринга. Лучший способ добраться до сути — это разобрать кусочки. запустите XSLT через совместимый XSLT-процессор, чтобы убедиться, что XSLT действителен. Затем запустите его вывод через средство проверки XML, чтобы убедиться, что вы не получаете никаких ошибок проверки XML. Наконец, пропустите выходные данные XSLT через средство проверки XHTML. Если все эти шаги выполнены успешно, вы можете столкнуться с такой простой проблемой, как ошибка Javascript.

person Cliff    schedule 16.07.2010
comment
Большое спасибо. Вы добавили несколько дополнительных шагов для устранения неполадок. Я вернусь к вам, как только выберу еще кое-что. Что меня озадачивает, так это то, что все страницы отображались правильно до добавления заголовков xhtml в код html и директив для xsl. Я могу сказать вам, что преобразование выполняется на стороне сервера и полностью передается в браузер. Я попытаюсь собрать пример, чтобы лучше объяснить проблему. - person Rob Wood; 16.07.2010

После (вынужденного) перерыва в выполнении этой задачи я вернулся к ней и обнаружил ошибку, которая мешала браузеру правильно отображать содержимое. XSL некорректно выводил элементы iframe и script как самозакрывающиеся теги. Чтобы этого не произошло, я добавил в элемент пробелы, используя <xsl:text> </xsl:text>.

Спасибо за вашу помощь и предложения.

person Rob Wood    schedule 29.07.2010