Встраивать в XSL 1.0 собственные функции

Miky

Guest
Встраивать в XSL 1.0 собственные функции

Нельзя ли каким-то образом встраивать XSL 1.0 собственные функции написаные на PHP? Где-то вроде видел пример. PHP 5.0.0. Процессор libxml2.
 

[DAN]

Старожил PHPClub
Можно, но идеологически неправильно.
Поэтому примером делиться не буду =)
 

Qasimodo

Новичок
Автор оригинала: [DAN]
Можно, но идеологически неправильно.
Поэтому примером делиться не буду =)
Почему ты считаешь расширения идеологически неверными ?
 

[DAN]

Старожил PHPClub
Автор оригинала: Qasimodo
Почему ты считаешь расширения идеологически неверными ?
Про акронимы слышал?
Тут нечто подобное получается.
Используем xslt чтобы трансформировать в html (or others) xml-данные, сгенеренные php-скриптом, причем трансформируем с помощью php-функций, которые встраиваем в xsl.
Чушь вобщем. Смысл использования xslt теряется.
 

Qasimodo

Новичок
Автор оригинала: [DAN]
трансформируем с помощью php-функций, которые встраиваем в xsl.
Чушь вобщем. Смысл использования xslt теряется.
Давай уточним: под "php-функций, которые встраиваем в xsl" что подразумевается ?
ПХП функция , доступная в скрипте, вызывающем трансформацию ?
В трансформации вызывается как xslt расширение ?
например:
<xsl:value-of select="php:особо_извращенный_format(/xpath/expression)" />

Или даже как замена промежуточной служебной ноде ?
<xsl:apply-templates select="//my:node/xpath/expression" />
заменить на
<xsl:apply-templates select="document('php:my_func())/xpath/expression" />
 

[DAN]

Старожил PHPClub
Да при любых уточнениях чушь получается.
Если тебе не хватает возможностей xslt, не мучай процессор всякими функциями, встраиваемыми или доступными.
Переходи на Smarty, и будет тебе счастье.

Данная возможность - как атомная бомба. Она существует, но ею никто не пользуется.
 

Miky

Guest
Ситуация следующая: Мне поставлена задача найти замену корпоративного шаблонизатора контента, я начал копать в сторону XSL/XML. Пока я его изучаю, ставлю эксперементы и пока не знаю всех возможностей XSL, но в процессе я пишу отчет: плюсы, минусы XSL по сравнению с используемой технологией. На основе него будет принематься решение переходить или нет не него.
Во-первых мне нужно что-то написать про расширяемость, а во-вторых заданы вопросы: "А что если нам нужно будет вывести это так-то и так-то?" В основном это касается преобразования строк. Вполне возможно что эти задачи вполне решаемы в рамках функционала XSL.

Я понимаю, что это идеологически не верно. Я и не собираюсь пичкать XSL шаблоны кодом PHP по-поводу и без него, просто мне сейчас нужно выяснить возможности XSL в самом общем смысле.
 

Alexandre

PHPПенсионер
ранее использовал смарти
теперь XSLT
и там и сям свои заморочки ;) так что надо глубже изучать возможности XSLT
Во-первых мне нужно что-то написать про расширяемость,
в каком смысле расширяемость?
можно-ли изменить шаблончик - да наздоровье...
и расширяемость и переносимость 100% в объеме XSLT возможностей, вплоть до генерации pdf и rtfиз твоего динамического содержимого :)
а во-вторых заданы вопросы: "А что если нам нужно будет вывести это так-то и так-то?"
тут уж надо глубже копать - метод проб и стуканье лбом об стену - самый надежный в постижении истины. Например, библиотеку шаблонов, по выводу даты (аналог смарти функий ) я неделю писал

Вывести можно все и по разному, а главное преимущество (??), что часть процессорного времени можно перенести на сторону клиента, отсылая ему чистый xml

-~{}~ 29.07.04 13:29:

да и классная эта штука XML

можешь в отчет шефу добавить,

моя последняя задача - авторизация пользователей и в наличии их прав - давать им те или иные действия.

права передаются в сессии после аутентификации и записываются в xml теге <role >RW</role> (можно иной на усмотрение разработчика)

для того, чтоб не отображать те или иные действия по наличию прав для пользователя - всего лишь навсего дописываешь в шаблон пару строк - и не надо менять исходный код программы
PHP:
<xsl:if test="role['.=W']">
текст программы который надо скрыть
</xsl:if>
 
Сверху