Xpoint
   [напомнить пароль]

xhtml + xsl, Internet Eplorer и DTD

Метки: [без меток]
2006-05-17 01:15:17 [обр] Влад Терехов(0/3)[досье]
<?xml version='1.0' encoding='windows-1251' ?>
<?xml-stylesheet type='text/xsl' href='style.xsl' ?>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
  "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">

<html xmlns="http://www.w3.org/1999/xhtml">
...
</html>

При Сontent-Type: application/xml IE (как минимум, v6) применяет к документу xsl таблицу стилей, но качает http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd, что приводит к заметным тормозам. Качает каждый раз, не кэширует вообще никак.

Если Сontent-Type отличен от application/xml, то IE не считает принятый контент xml-документом, соответсвенно, не применяет к нему xsl таблицу стилей.

А хочется, чтобы и стиль применился и DTD не качался. Или хотя бы как-то кэшировался...

Варианты?

спустя 11 минут [обр] Влад Терехов(0/3)[досье]
Сам пока не придумал ничего лучше, чем убрать декларацию типа документа. Тогда всё работает в том числе и в IE. Но документ, понятно, перестаёт быть валидным xhtml 1.0 strict. А хочется :)
спустя 11 часов [обр] Александр Лукьянов(3/781)[досье]
Указать в XSLT <xsl:output ... doctype-system="DTD/xhtml1-transitional.dtd" doctype-public="-//W3C//DTD XHTML 1.0 Transitional//EN" />?
спустя 8 часов [обр] Александр Лукьянов(3/781)[досье]
В смысле, указать конечно Strict. А из xml убрать.
спустя 1 день 16 часов [обр] Влад Терехов(0/3)[досье]

Александр Лукьянов[досье]вы меня не до конца поняли.
В xsl есть указание doctype, только это не имеет прямого отношения к вопросу. Я о том, что правильно было бы (и очень хочется по другой причине) поместить декларацию типа в исходный XML-документ. Однако если это сделать, IE качает DTD каждый раз заново. Можно заставить его не делать это, если в HTTP-заголовке Content-Type написать что-либо отличное от application/xml (например text/xhtml). Но тогда он перестаёт считать исходный файл XML-документом и не применяет к нему xsl-преобразование. В остальных браузерах проблем нет.

Одно из возможных решений проблемы для IE - удаление декларации типа из исходного документа. Сейчас так и сделано. Но хочется, чтобы декларация всё-таки присутствовала. Имеенно в исходном документе, а не в том, который получается в результате преобразования.

спустя 1 час 7 минут [обр] Александр Лукьянов(3/781)[досье]
Влад Терехов[досье]
Да, не совсем понял. Тогда боюсь никак — AFAIR в IE можно отключить загрузку DTD только если загружать документ скриптом.
Powered by POEM™ Engine Copyright © 2002-2005