EXSLT func:function not registered for XSLT filter module

Kate F kate at elide.org
Wed Jul 17 16:18:03 UTC 2013


On 15 July 2013 19:32, Maxim Dounin <mdounin at mdounin.ru> wrote:
> Hello!
>
> On Sat, Jul 13, 2013 at 12:19:51PM +0200, Kate F wrote:
>
>> Hi,
>>
>> I'm trying to use EXSLT's <func:function> with nginx's xslt filter
>> module. The effect I think I'm seeing is that my functions are
>> seemingly ignored.
>
> [...]
>
>> Looking at ngx_http_xslt_filter_module.c I see exsltRegisterAll() is
>> called, which is what should register libexslt's handler for
>> func:function and friends:
>>
>>     #if (NGX_HAVE_EXSLT)
>>         exsltRegisterAll();
>>     #endif
>>
>> I know NGX_HAVE_EXSLT is defined because other EXSLT functions (such
>> as things in the date: and str: namespaces) work fine.
>
> It looks like exsltRegisterAll() is called too late for EXSLT
> Functions extension.
>
> Please try the following patch:
>
> # HG changeset patch
> # User Maxim Dounin <mdounin at mdounin.ru>
> # Date 1373909466 -14400
> # Node ID bc1cf51a5b0a5e8512a8170dc7991f9e966c5533
> # Parent  8e7db77e5d88b20d113e77b574e676737d67bf0e
> Xslt: exsltRegisterAll() moved to preconfiguration.
>
> The exsltRegisterAll() needs to be called before XSLT stylesheets
> are compiled, else stylesheet compilation hooks will not work.  This
> change fixes EXSLT Functions extension.

Awesome! Good catch.

Thanks for that. Your patch works fine.

--
Kate



More information about the nginx mailing list