Форум: "Прочее";
Текущий архив: 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