XML(UTF-8)+XSLT(Win-1251)?

chameleon

Новичок
XML(UTF-8)+XSLT(Win-1251)?

как проще осуществить трансформацию xml документа созданного с помощью domxml (я так понимаю он в utf-8) с помощью шаблона (на данный момент в win-1251) чтобы весь текст корректно отображался? (php4.3.1)
сейчас использую как в примерах:
Код:
$doc = domxml_new_doc("1.0");
...
$xsldoc = domxml_xslt_stylesheet_file('show1.xsl');
$show=$xsldoc->process($doc);

//print $xsldoc->result_dump_mem($show); - грязно ругатется :(

$tree = $show->dump_mem(true,"utf-8");
echo "$tree";
//в принципе работает (сами xml данные отображаются корректно), но тогда портятся символы из шаблона (win-1251) :(...
треды про кодировки почитал, играл с xsl:eek:utput и уже сам xsl в utf-8 сохранял - видать какой-то вариант пропустил :(...
 

IchPokhudezh

Guest
А может, дело в том, что все domxml_xslt* -> experimental?
К примеру, Sablot .97 - нормально все с xsl:eek:utput как windows-1251, так и с utf-8.
 

chameleon

Новичок
если на самом деле из-за этого, то уж лучше бы подождали с релизом тогда :(...
народ, кто с этими ф-циями работал - дайте коррекные примеры плиз...
 

Sababa

Guest
все нормально с домом.


$xsldoc->result_dump_mem($show); - грязно ругатется :(
на что ругается?
 

chameleon

Новичок
уже не ругается :)...но на данный момент:
Код:
$doc = domxml_new_doc("1.0");
...
$xsldoc = domxml_xslt_stylesheet_file('2tree_utf8.xsl');
//<?xml version="1.0" encoding="utf-8"?>
//<xsl:output method="xml" encoding="utf-8"/>

$show=$xsldoc->process($doc);

$xsldoc2 = domxml_xslt_stylesheet_file('show1_utf8.xsl');
//<?xml version="1.0" encoding="utf-8"?>
//<xsl:output method="html" encoding="utf-8"/>

$show2=$xsldoc2->process($show);

$html = $xsldoc2->result_dump_mem($show2);
echo $html;
//кусок полученного html:
//<html><head><meta content="text/html; charset=UTF-8" http-equiv="Content-Type">
//...
//</html>
причем элементы <xsl:text>русские символы</xsl:text> из xslt шаблона - в utf-8, а все xml данные в win1251 :(
при переключении кодировки браузера можно читать нормально или то или это, но не все сразу :)..
 

Sababa

Guest
кодировка xml документа указывается в декларации xml, т.е.
если твой документ в windows-1251,
<?xml version="1.0" encoding="windows-1251" ?>

и не важно xml, или это xslt файл, тебе нужно указывать кодировку, в которой написан документ
 

chameleon

Новичок
дык в том то и заковырка, что я уже все файлы переделал в utf-8 (коментарии в последнем примере показывают куски включаемых xslt, т.е они оба в utf-8 (я смотрел - реально по 2 байта на символ) и вывод у обоих настроен в utf-8) и сам xml файл тоже в utf-8 (вот насчет этого я больше всего сомневаюсь, хотя при выводе чистого xml через $doc->dump_mem(true,"utf-8"); все четко отображается) и откуда берется win-1251 ну совсем не понимаю :(...
 
Сверху