Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2010.01.10;
Скачать: CL | DM;

Вниз

ДОМ2 – как построить XML?   Найти похожие ветки 

 
И Павел   (2009-11-07 15:54) [0]

Здравствуйте!

Я только начинаю учить web программирования, и у меня возникла такая проблема:
Пытаюсь пропарсить XML через XSLTProcessor.

Файл names.xml:
<?xml version="1.0" encoding="windows-1251"?>
<piples>
 <man>
   <name>Иванов</name>
   <age>20</age>
 </man>
 <man>
   <name>Петров</name>
   <age>30</age>
 </man>
 <man>
   <name>Сидоров</name>
   <age>40</age>
 </man>
</piples>

Файл names.xls:
<?xml version="1.0" encoding="windows-1251"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">

<xsl:template match="/">
 <xsl:for-each select="piples/man">
   <xsl:value-of select="name" />
   <br/>
 </xsl:for-each>
</xsl:template>

</xsl:stylesheet>


Файл 1.php:
<?php
 $xml = new DOMDocument;
 $xml->load("names.xml");
 $xsl = new DOMDocument;
 $xsl->load("names.xml");
 
 $proc = new XSLTProcessor;
 $proc->importStyleSheet($xsl);
 $proc->transformToURI($xml, "out.html");
?>


При этом, если запустить файл php все выводится в нерусской кодировке и игнорируются брейки.
Но если парсить просто открыв names.xml то все выводится как надо.

Подскажите, пожалуйста, как исправить такую проблему с кодировкой?


 
И Павел   (2009-11-07 16:06) [1]

Ошибку с брейками нашел: грузил xml дважды:

$xml = new DOMDocument;
$xml->load("names.xml");
$xsl = new DOMDocument;
$xsl->load("names.xml");


Остается проблема с кодировкой...


 
xayam ©   (2009-11-07 16:13) [2]


> При этом, если запустить файл php все выводится в нерусской
> кодировке и игнорируются брейки.
> Но если парсить просто открыв names.xml то все выводится
> как надо.

так а в какой кодировке выводишь?
скорей всего достаточно прописать перед выводом строку -


header ( "Content-Type: text/html; charset=windows-1251" );

или любую кодировку какую надо


 
И Павел   (2009-11-07 16:20) [3]

xayam ©, спасибо.

Но, к сожалению:
<?php
 header ( "Content-Type: text/html; charset=windows-1251" );

 $xml = new DOMDocument;
 $xml->load("names.xml");
 $xsl = new DOMDocument;
 $xsl->load("names.xsl");
 
 $proc = new XSLTProcessor;
 $proc->importStyleSheet($xsl);
 $proc->transformToURI($xml, "out.html");
?>

дал такой же результат.
Просто мой браузер неправильно определил кодировку. Выбрал автовыбор и все заработало. Но можно ли как нибудь сделать это программно?


 
И Павел   (2009-11-07 16:23) [4]

С header ( "Content-Type: text/html; charset=KOI8-R " ) все заработало!
xayam © - еще раз, большое спасибо.


 
xayam ©   (2009-11-07 16:33) [5]


> И Павел   (07.11.09 16:20) [3]
> Просто мой браузер неправильно определил кодировку. Выбрал
> автовыбор и все заработало. Но можно ли как нибудь сделать
> это программно?

в names.xls ты можешь еще прописать вывод мета-тега

...
<head>
<meta content="text/html; charset=windows-1251" http-equiv="Content-type">
</head>
...

остальное зависит от клиента-браузера. Firefox должен правильно показывать


 
xayam ©   (2009-11-07 16:41) [6]

Вот пример работающей таблицы стилей для архивов этого форума

http://xayam.com/trd.xsl


 
И Павел   (2009-11-07 17:20) [7]

xayam ©, спасибо.
Через meta тоже попробовал, правда и там требует KOI8-R или UTF8...


 
xayam ©   (2009-11-07 18:37) [8]


> И Павел   (07.11.09 17:20) [7]
> xayam ©, спасибо.
> Через meta тоже попробовал, правда и там требует KOI8-R
> или UTF8...

utf-8 используй, я всегда так делаю


 
И Павел   (2009-11-07 19:04) [9]


> xayam ©

OK



Страницы: 1 вся ветка

Текущий архив: 2010.01.10;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.012 c
15-1257540544
TUser
2009-11-06 23:49
2010.01.10
Киев находится на широте Лондона


15-1257541254
Игорь Шевченко
2009-11-07 00:00
2010.01.10
Дмитрий Заварзин aka Думкин, с днем рождения!


1-1233071230
harisma
2009-01-27 18:47
2010.01.10
Скролл в TreeView


2-1258621753
antonsha
2009-11-19 12:09
2010.01.10
TreeView


2-1258211765
Вильен
2009-11-14 18:16
2010.01.10
Delphi7 + OpenGL