проблема с отображением отпарсенной страницы

cray

Guest
проблема с отображением отпарсенной страницы

Всем доброго времени суток!!!

Никто не подскажет, почему не отображается страница по адресу http://195.5.28.161/cms/???
Но если ее сохранить на диск и потом открыть, тогда она отобразится.
Она была сгенерирована в результате XSLT-преобразования...

Я думаю, что вся проблема в кодировках, только вот что конкретно, не пойму.

в XSL-ке у меня стоит iso-8859-1 (пусть даже без русского, но грузиться-то должно):
Код:
<?xml version="1.0" encoding="iso-8859-1"?>

<xsl:stylesheet
        xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
        version="1.0"
        xmlns="http://www.w3.org/1999/xhtml">
               . . . . . . . . .
В XML-ке та же кодировка iso-8859-1:
Код:
<?xml version="1.0" encoding="iso-8859-1"?>

<page>
   <title>Debug XSL Sheet</title>
   <content>
             . . . . . . . . .
Ну вот не отображается и все тут... :(
На validator.w3.org проверял - говорит, что валидная разметка (значит дело не в этом).
Какие есть мысли??? :confused:
 

Qasimodo

Новичок
Не похоже на результат преобразования. Или неправильная обработка после преобразования
Никакой процессор в здравом уме не поставит <?xml декларацию ПОСЛЕ DOCTYPE.
<?xml > должна быть первой строкой
 

cray

Guest
2Антон:
В мозилле не глядел... проверял на ИЕ и на Опере (ни тот, ни та не отображают). Но проблему в любом случае надо решать - не будут же юзера специально браузер на Gecko ставить...

2Qasimodo:
Согласен, процессор у меня стоит здравомыслящий :) - Саблотрон. Доктайп я уже сам дописывал (без него тоже не отображалось):
Код:
echo "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\"
       \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n".
xslt_parse($_XMLOUT, join("", file("main.xsl")));
Просто сначала все это дело решил проверить на W3C, а там валидатор ругается на отсутствие доктайпов - вот я и приписал вручную (значит не туда приписал) (а, кстати, Саблотрон ваще умеет доктайпы вставлять? Если да, то как? А то как-то невалидно получается :))

2All:
И все же... раз уж на Мозилле открывается и проверку на W3C проходит, значит что-то правильное есть...
Может все надо переводить в UTF?
Или если дело не в кодировке, то что это может быть?
 

Qasimodo

Новичок
Чтото есть.
если саблотрон игнорирует doctype-system, doctype-public из <xsl:eek:utput>, то, возможно, понимает omit-xml-declaration

А насчет кодировки ...
возможно он поймет, если в xsl-output установить encoding="..."
 

cray

Guest
ОК, с доктайпом я впринципе понял
А для установки выходной кодировки такое в исходнике ПХП не прокатит xslt_set_encoding($xslt_hanlde, "iso-8859-1"); ???

-~{}~ 29.07.04 17:04:

С отображением страницы разобрался, но не до конца.
В XSL-ке у меня xsl:eek:utput был следующим:
<xsl:eek:utput indent="yes" />
Когда дописал method="html" (<xsl:eek:utput indent="yes" method="html" />) - все заработало.
Вот цитата из перевода спецификации:
По умолчанию атрибут method выбирается следующим образом. Если
  • корневой узел конечного дерева имеет элемент непосредственным потомком,
  • расширенное имя первого элемента в конечном дереве, который является непосредственным потомком корневого узла (например, элемент документа) имеет локальную часть html (в любом сочетании верхних и нижних регистров) и нулевой URI пространства имен,
  • все текстовые узлы, предшествующие первому элементу в конечном дереве, являющемуся непосредственным потомком корневого узла, содержат только пробельные символы,
то тогда методом вывода по умолчанию является html. В противном случае таковым является xml. Метод вывода по умолчанию должен быть использован если нет элементов xsl:eek:utput, либо ни один элемент xsl:eek:utput не определяет значения атрибута method.
На сколько я понял, по умолчанию method в моем случае был равен "xml" и процессор вставлял в документ первую строку:
<?xml version="1.0" encoding="iso-8859-1"?>
после чего браузеры отказывались его отображать (также я явно указывал "xml" и страница не отображалась). При явном указании значения "html" этого атрибута строка перестала выводиться и все заработало. Но есть одно "НО": как мне тогда генерить XHTML документы, ведь они, являясь подмножеством XML, тоже не будут отображаться?

Еще одно: я вообще не понял, зачем нужно выставлять выходную кодировку? У меня, например стояла iso-8859-1, которая напрочь не поддерживает кириллицу, а в документе успешно видны родные буквы....
 

Qasimodo

Новичок
для xhtml метод должен быть xml
а вот <script> таг должен быть непустым. Используй заглушку
<script type="text/javascript" language="JavaScript1.2" src="script"><xsl:comment>
//</xsl:comment></script>

<script src="tralala.js" /> не всеми бровсерами воспринимается корректно
 

cray

Guest
Вот я о чем и говорю, что xml, а он, [бип], не отображается.
Тока причем здесь скрипт (у меня скриптов-то и нету)??? Я знаю, что он непустым должен быть, а зачем, собсно, его пустым делать?

-~{}~ 31.07.04 16:08:

2Qasimodo:
Прошу прощения за это:
Тока причем здесь скрипт (у меня скриптов-то и нету)??? Я знаю, что он непустым должен быть, а зачем, собсно, его пустым делать?
Я сначала ваще не сообразил... Я забыл, что у меня какие-то скрипты там были :) А саблотрон заменил мой пустой скрипт на одиночный тег. Вопщем твой вариант
<script type="text/javascript" language="JavaScript1.2" src="script"><xsl:comment>//</xsl:comment></script>
работает, также еще прокатывает
<script src="main.js" type="text/javascript"><![CDATA[//]]></script>
но первый с точки зрения совместимости со старыми броузерами лучше :)

Большое thanx всем, особенно to Qasimodo & Slach
 
Сверху