Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Прочее";
Текущий архив: 2010.01.10;
Скачать: [xml.tar.bz2];

Вниз

ДОМ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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.46 MB
Время: 0.05 c
2-1258436479
Pascal96
2009-11-17 08:41
2010.01.10
Как найти первую цифру дробной части?


2-1258691572
котэ
2009-11-20 07:32
2010.01.10
Ограничение кода в режиме разработки (design time)


2-1258553100
Сергей
2009-11-18 17:05
2010.01.10
Возможно ли запустить метод класса при создании класса?


3-1233121999
Merry
2009-01-28 08:53
2010.01.10
Запрос из 2 таблиц


15-1257409307
Ищущий
2009-11-05 11:21
2010.01.10
Грамотный эникейщик нужен?





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский