Вниз
Скачать: 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 вся ветка

Скачать: CL | DM;



Память: 0.47 MB
Время: 0.008 c
15-1257285891
McSimm
2009-11-04 01:04
2010.01.10
Об упорных червяках и математике


8-1202382479
DVM
2008-02-07 14:07
2010.01.10
Детектор расфокусированного изображения.


2-1258308164
&#8467;o&#8467;
2009-11-15 21:02
2010.01.10
Клавиатура в замену джостику


15-1256804778
@!!ex
2009-10-29 11:26
2010.01.10
Нужен веб дизайнер.


15-1257856074
oxffff
2009-11-10 15:27
2010.01.10
Уважаемый модератор. Почисти и мой последний пост в теме




   Наверх