Perl из XSLT — 2

| Нет комментариев

Страх преодолен. Мы официально используем вызовы Perl-функций из XSLT, преобразуемого из перла.

sub register_functions {
    my $xslt = shift || 'XML::LibXSLT';
    my $ns = 'http://whoyougle.com';
    $xslt->register_function($ns, 'uri-encode',
         \&URI::Escape::uri_escape_utf8);
    $xslt->register_function($ns, 'js-encode', 
         \&escapeJS);
    $xslt->register_function($ns, 'declension',
         \&Lingua::RU::Numeric::Declension::numdecl);
}

Соответственно, в нужных местах теперь достаточно написать

<a href="{w:uri-encode(@href)}">
    <xsl:value-of select="text()"/>
</a>

Функция, склоняющая слова после числительных, написанная на XSLT, осталась только в архивах :-)

Теперь хочется сравнить производительность чисто-XSLT-решения, решения, когда перл готовит все данные сам, и случая, когда из XSLT мы вызываем функции на Perl.

Кстати, оказалось, что libxslt регистрирует все функции в одной куче, вплоть до того, что их возможно регистрировать не на инстансе парсера (созданном вызовом new XML::LibXSLT), а непосредственно через функцию модуля:

XML::LibXSLT->register_funcion(...);

Комментировать

Страницы

  • img

Об этой записи

Сообщение опубликовано 22.04.2010 23:05. Автор — ash.

Предыдущая запись — Libapreq2 + <SUP> + MSIE = Fail

Следующая запись — Спутник, орбита, запятая

Смотрите новые записи на главной странице или загляните в архив, где есть ссылки на все сообщения.