XSLT
Товарищи, знающие xslt и, желательно, php, дайте о себе знать.
Буду очень признателен.
Суть вопроса:
Есть xml структура:
XML:
-
<div id="d1.">
-
<div id="d1.1.">
-
<div id="d1.1.1.">...</div>
-
...</div>
-
<div id="d1.10.">
-
<div id="d1.10.10.">..</div>
-
...</div>
-
</div>
и xslt шаблон
XML:
-
<li></li>
Проблема в том что в итоге выводятся элементы которые выше 2го уронвня вложенности (/div/div), т.е. результатом данного примера должно было быть
А в итоге получается (похоже на //div)
Причем происходит это не всегда в одном из 100-200 случаев. ВСего на сайте порядка 250 страниц и хоть одна из них после генерации html'a из xml будет с этим багов. Генерируется это все посредством php5 по 1й странице за запрос скрипта (xml порядка 1,5мб)
У меня уже даже предположения закончились.
Проблема оказалась совершенно в другом месте. Перед тем как производить манипуляции с xml файлом, он конвертировался iconv'ом из cp1251 в uf-8, и где-то это давало непонятный сбой. После исключения лишних операций с конвертацией все заработало нормально. Забавно.
Я сейчас как раз делаю XSLT фреймворк на PHP, и сайты на нем.
Судя по коду (2 xsl:for-each) должен выводиться только третий уровень вложенности /div/div -> div, или представлен не весь входной документ.
Ошибка скорее всего вообще в другом месте. Используется PHP5?
PHP5
Раньше оно было на PHP4 и работало нормально. вот после того как переписал для 5й ветки и появилась эта фигня.
$doc = new DOMDocument("1.0", SITE_CP);
$xsl = new XSLTProcessor();
$doc->load($xsl_file);
$xsl->importStyleSheet($doc);
$doc->loadXML(file_get_contents($xml_file));
$xsl->transformToXML($doc);
Спасибочки автору. Возможно, в будущем я и правда реализую подобную затею.