Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Компьютеры + Интернет » Вебмастеру » [решено] PHP + XSTL | Смена кодировки результирующего файла

Ответить
Настройки темы
[решено] PHP + XSTL | Смена кодировки результирующего файла

Аватара для Coutty

Кот Ти


Сообщения: 7318
Благодарности: 1204


Конфигурация

Профиль | Отправить PM | Цитировать


XSLT-преобразование XML в XHTML почему-то выдаёт результат в UTF-8 с таким кодированием кириллических символов: & # x43C;& # x438;& # x440; (поставил пробелы, т.к. сразу буквы показывает ). Отображается-то правильно, но вес документа увеличивается сильно. Да и неизвестно ещё, как поисковики такой текст индексируют.
Как заставить выполнять вывод или в UTF-8 с нормальным кодированием (чтоб в исходнике читался, а не только в браузере) или в кодировке windows-1251, например?

Исходные данные.

doc.xml:
Код: Выделить весь код
<?xml version="1.0" encoding="windows-1251"?>
<catalog>
	<book id="1">
		<author>Автор 1</author>
		<title>Книга 1</title>
	</book>
	
	<book id="2">
		<author>Автор 2</author>
		<title>Книга 2</title>
	</book>
	
	<book id="3">
		<author>Автор 3</author>
		<title>Книга 3</title>
	</book>
</catalog>

doc.xsl:
Код: Выделить весь код
<?xml version="1.0" encoding="windows-1251"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="xml" 
doctype-system="http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"  
doctype-public="-//W3C//DTD XHTML 1.0 Strict//EN" />
<xsl:template match="/">
<html>
<head>
	<title>Заголовок</title>
</head>
<body>
<xsl:for-each select="catalog/book">
<xsl:value-of select="author" /> - <xsl:value-of select="title" /><br />
</xsl:for-each>
</body>
</html>
</xsl:template>
</xsl:stylesheet>
index.php:
PHP код: Выделить весь код

<?php 

   $xslDoc 
= new DOMDocument();
   
$xslDoc->load("doc.xsl");

   
$xmlDoc = new DOMDocument();
   
$xmlDoc->load("doc.xml");

   
$proc = new XSLTProcessor();
   
$proc->importStylesheet($xslDoc);
   echo 
$proc->transformToXML($xmlDoc);
?>


Отправлено: 22:09, 06-12-2008

 

Deadooshka


Сообщения: 2565
Благодарности: 698

Профиль | Отправить PM | Цитировать


у DOMDocument там куча свойств (encoding, substituteEntities...), и я бы поигрался с ними (перед load)...

Отправлено: 02:24, 07-12-2008 | #2



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.


Аватара для Coutty

Кот Ти


Сообщения: 7318
Благодарности: 1204

Профиль | Отправить PM | Цитировать


Где их хоть посмотреть-то можно? В справке PHP свойства не перечислены (или я совсем не там смотрю...).

Нашёл ещё такой способ установки кодировки, но это кодировка для исходных файлов ставится. В итоге всё равно UTF-8 с этими семибайтными символами.
PHP код: Выделить весь код

<?php 

   $xslDoc 
= new DOMDocument("1.0""windows-1251");
   
$xslDoc->load("doc.xsl");

   
$xmlDoc = new DOMDocument("1.0""windows-1251");
   
$xmlDoc->load("doc.xml");

   
$proc = new XSLTProcessor();
   
$proc->importStylesheet($xslDoc);
   echo 
$proc->transformToXML($xmlDoc);
?>


Отправлено: 09:31, 07-12-2008 | #3


Deadooshka


Сообщения: 2565
Благодарности: 698

Профиль | Отправить PM | Цитировать


Цитата Coutty:
Где их хоть посмотреть-то можно? »
http://ru2.php.net/DOMDocument
http://ru2.php.net/xsltprocessor
Это сообщение посчитали полезным следующие участники:

Отправлено: 03:26, 08-12-2008 | #4


Аватара для Coutty

Кот Ти


Сообщения: 7318
Благодарности: 1204

Профиль | Отправить PM | Цитировать


По ссылкам посмотрел - есть что полезное (узнал, кстати, новый метод поиска на php.net - просто указать искомое после URL'а)), но с кодировкой вопрос решился совсем в другой области
В самом XSL-файле изменил директиву xsl : output на такую:
Код: Выделить весь код
<xsl:output 
method="xml" 
encoding="windows-1251"
doctype-system="http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"  
doctype-public="-//W3C//DTD XHTML 1.0 Strict//EN" />
Теперь кодировка именно windows-1251 получается.

Отправлено: 14:08, 08-12-2008 | #5



Компьютерный форум OSzone.net » Компьютеры + Интернет » Вебмастеру » [решено] PHP + XSTL | Смена кодировки результирующего файла

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
CMD/BAT - [решено] Автоматическая смена кодировки .txt файлов __sa__nya Скриптовые языки администрирования Windows 22 07-05-2018 02:24
CMD/BAT - [решено] Изменение кодировки txt файла из ANSI в UTF-16 LE crashtuak Скриптовые языки администрирования Windows 11 20-08-2009 11:57
[решено] изменение кодировки файла через командную строку vagner_HATE Microsoft Windows 2000/XP 3 06-12-2006 20:34
Смена кодировки в IRC. zippi Хочу все знать 2 12-07-2006 20:02
Условие кодировки. Редактирование файла из cmd. Mss Автоматическая установка Windows 2000/XP/2003 4 19-05-2005 23:25




 
Переход