polt
Новичок
XSLTProcessor проблемма с импортированием нескольких стилей
Добрый день!
Мой скрипт генерирует XML, после чего с помощью класс XSLTProcessor я подгружаю XSL стиль и получаю документ.
Все нормально работает если загружаю только одни стиль (один вызов функции XSLTProcessor::importStyleSheet). Мне же необходимо импортировать несколько стилей, я в цикле это и делаю, но ожидаемого результата не получаю.
Если не использовать цикличное включнение стилей, а вписать все в один XSL, то все работает.
Проверял разными программами, применяя к исходному XML стили по очереди, все работает.
На php с помощью XSLTProcessor::importStyleSheet нет. Не могу понять почему, то ли все же XSL у меня корявый, то ли так вообще нельзя делать..., я полагаю, что importStyleSheet, аналогична <xsl:import .. /> почему не работает тогда.
Менял местами порядок включения стилей в итоге все смахивает на то, что обрабатывается всегда только один стиль.
Сама задача, необходимо подключать стили, пути к которым генерирует PHP.
-~{}~ 21.04.09 10:53:
Разобрался я...
Точнее сделал по другому, включаю элементы не с помощью XSLTProcessor::importStyleSheet, а с помощью DOMDocument::createElementNS и т.д....
Кстати, обязательно createElementNS нужно использовать!
В общем диагноз - "кривые руки, больная голова" и "учите мат.часть"
Добрый день!
Мой скрипт генерирует XML, после чего с помощью класс XSLTProcessor я подгружаю XSL стиль и получаю документ.
Все нормально работает если загружаю только одни стиль (один вызов функции XSLTProcessor::importStyleSheet). Мне же необходимо импортировать несколько стилей, я в цикле это и делаю, но ожидаемого результата не получаю.
Если не использовать цикличное включнение стилей, а вписать все в один XSL, то все работает.
Проверял разными программами, применяя к исходному XML стили по очереди, все работает.
На php с помощью XSLTProcessor::importStyleSheet нет. Не могу понять почему, то ли все же XSL у меня корявый, то ли так вообще нельзя делать..., я полагаю, что importStyleSheet, аналогична <xsl:import .. /> почему не работает тогда.
Менял местами порядок включения стилей в итоге все смахивает на то, что обрабатывается всегда только один стиль.
Сама задача, необходимо подключать стили, пути к которым генерирует PHP.
PHP:
$xml = new DOMDocument('1.0', 'utf-8');
$xml->load('test.xml');
$xsl = new XSLTProcessor();
$doc1 = new DOMDocument();
$doc1->load('test.xsl'); # основной докумет. Менять местами пробывал изменения не значительны.
$xsl->importStyleSheet($doc1);
$doc3 = new DOMDocument();
$doc3->load('import3.xsl');
$xsl->importStyleSheet($doc3);
$doc2 = new DOMDocument();
$doc2->load('import2.xsl');
$xsl->importStyleSheet($doc2);
$res = $xsl->transformToDoc($xml);
$data = $res->saveXML();
header('Content-Type: text/html; charset=utf-8;');
echo $data;
Разобрался я...
Точнее сделал по другому, включаю элементы не с помощью XSLTProcessor::importStyleSheet, а с помощью DOMDocument::createElementNS и т.д....
Кстати, обязательно createElementNS нужно использовать!
В общем диагноз - "кривые руки, больная голова" и "учите мат.часть"