XSLT

Товарищи, знающие xslt и, желательно, php, дайте о себе знать.

Буду очень признателен.

Суть вопроса:

Есть xml структура:

[xml]

..

[/xml]

и xslt шаблон
[xml]

  • [/xml]

    Проблема в том что в итоге выводятся элементы которые выше 2го уронвня вложенности (/div/div), т.е. результатом данного примера должно было быть
    [html]

  • О компании
  • Решения
  • [/html]

    А в итоге получается (похоже на //div)
    [html]

  • О компании
  • Миссия
  • Решения
  • Телеком
  • [/html]

    Причем происходит это не всегда в одном из 100-200 случаев. ВСего на сайте порядка 250 страниц и хоть одна из них после генерации html’a из xml будет с этим багов. Генерируется это все посредством php5 по 1й странице за запрос скрипта (xml порядка 1,5мб)

    У меня уже даже предположения закончились.


    Проблема оказалась совершенно в другом месте. Перед тем как производить манипуляции с xml файлом, он конвертировался iconv’ом из cp1251 в uf-8, и где-то это давало непонятный сбой. После исключения лишних операций с конвертацией все заработало нормально. Забавно.

    4 Comments

    1. Волька says:

      Я сейчас как раз делаю XSLT фреймворк на PHP, и сайты на нем.

    2. Волька says:

      Судя по коду (2 xsl:for-each) должен выводиться только третий уровень вложенности /div/div -> div, или представлен не весь входной документ.
      Ошибка скорее всего вообще в другом месте. Используется PHP5?

    3. 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);

    4. Степаныч says:

      Спасибочки автору. Возможно, в будущем я и правда реализую подобную затею. 🙂

    Leave a Reply

    You must be logged in to post a comment.