vasiliy
Новичок
Подскажите лучший способ конвертации XML 2 RTF
Здравствуйте, уважаемые.
Хочу посоветоваться со знающими людьми в надежде что это поможет мне сэкономить время, не слишком жертвуя масштабируемостью.
Введение:
Цель была изначально такая: вывести результат некого запроса (к БД, неважно к какой в настоящее время уже реализовано несколько разных "драйверов" для разных БД) в виде RTF.
Естественно как человек жаждущий знаний я решил пойти путём умным: есть скрипт, которая выдаёт результат (всё необходимое) в XML и есть XSLT-шаблон, который описывает преобразование этого всего в RTF.
Почему так хитро: предполагается, что в дальнейшем, при расширении системы возможно будет менять формат файла просто заменяя xslt-шаблоны. Да и возможно (скорее всего) необходим будет экспорт не только в RTF. Хотелось бы, что бы скрипт, который формирует данные в XML был в одном месте, а конвертирование их в RTF выполналось другой функцией.
По отдельности каждая из частей работает: формируется правильный XML документ, и он верно (проверялось sabcmd) конвертируется в RTF, который потом успешно открывается.
Задача:
Как мне произвести XSL-трансформацию из PHP (версия 5.1xxx). Естественно есть много способов, один лучше другого, и у всех свои плюсы и минусы. Собственно задача состоит в том, чтобы выбрать что-нибудь. Собственно я хочу, что бы уважаемая публика прокомментировала варианты.
Что бы уважаемая публика мне посоветовала?
Здравствуйте, уважаемые.
Хочу посоветоваться со знающими людьми в надежде что это поможет мне сэкономить время, не слишком жертвуя масштабируемостью.
Введение:
Цель была изначально такая: вывести результат некого запроса (к БД, неважно к какой в настоящее время уже реализовано несколько разных "драйверов" для разных БД) в виде RTF.
Естественно как человек жаждущий знаний я решил пойти путём умным: есть скрипт, которая выдаёт результат (всё необходимое) в XML и есть XSLT-шаблон, который описывает преобразование этого всего в RTF.
Почему так хитро: предполагается, что в дальнейшем, при расширении системы возможно будет менять формат файла просто заменяя xslt-шаблоны. Да и возможно (скорее всего) необходим будет экспорт не только в RTF. Хотелось бы, что бы скрипт, который формирует данные в XML был в одном месте, а конвертирование их в RTF выполналось другой функцией.
По отдельности каждая из частей работает: формируется правильный XML документ, и он верно (проверялось sabcmd) конвертируется в RTF, который потом успешно открывается.
Задача:
Как мне произвести XSL-трансформацию из PHP (версия 5.1xxx). Естественно есть много способов, один лучше другого, и у всех свои плюсы и минусы. Собственно задача состоит в том, чтобы выбрать что-нибудь. Собственно я хочу, что бы уважаемая публика прокомментировала варианты.
- Использовать стандартный XSLTProcessor. Этот способ меня вполне устраивает, но предназначен он семантически для преобразования XML в XML (или в HTML в крайнем случае)! RTF же на XML ну никак не смахивает. Вообщем-то возможно метод transformToXML делает как раз то, то нужно и его результат подойдёт (буду пробовать), но семантически это не совсем верное решение и меня не устраивает то, что его применение (в некоторых реализациях) в дальнейшем может привести к ошибкам, которые будет непросто обнаружить.
- Использовать XSLT transformations (те что на базе sablotron'а). Этот вариант кажется мне наиболее красивым (по крайней мере, sabcmd меня вполне устраивает), но естественно меня расстраивает, что он не входит в стандартные расширения PHP5. Переходить на PHP4 мне не хочется. В принципе, я не против установить его из PECL и вынести (и sablotron заодно) в требование к системе, но я его не нашёл в PECL. Если бы кто-нибудь мне разъяснил ситуацию с этой либой, я был бы очень благодарен.
- Использовать sabcmd через proc_open. Т.е. запустить sabcmd и работать с его stdin/out (что не очень красиво). Главная проблема в том, что я стараюсь вообще не допускать fork-exec из скриптов по соображениям безопасности (параметры естественно передавать надо будет). Осталось только убедить себя, что это моя личная паранойя. Кроме того, я в своё время сталкивался с определёнными проблемами при такой реализации на платформе Windows, а именно sabcmd (который компилится gcc) почему-то не использует stdin, а создаёт терминал. Хотя возможно я просто загоняюсь.
- Забить на xslt, и написать просто php скрипт, который программно конвертит XML в нужный RTF. Этот способ тоже вполне рабочий, но мне кажется он выглядит непрозрачен и неочевидным. Это очень размытые слова, я в них в данном случае вкладываю следующий смысл: при необходимости сделать новый шаблон он 1) потребует знания PHP 2) будет гораздо более загруженным, чем XSLT.
Что бы уважаемая публика мне посоветовала?