EXSLT func:function not registered for XSLT filter module
Kate F
kate at elide.org
Sat Jul 13 10:19:51 UTC 2013
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.
I made a test XSLT stylesheet:
iona% cat xsl/fish.xsl
<?xml version="1.0"?>
<xsl:stylesheet version="1.0"
xmlns="http://www.w3.org/1999/xhtml"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:x="http://xml.elide.org/fish"
xmlns:func="http://exslt.org/functions"
extension-element-prefixes="func">
<func:function name="x:fish">
<func:result select="123"/>
</func:function>
<xsl:output method="text" encoding="utf-8"
media-type="plain/text"/>
<xsl:template match="/">
<xsl:value-of select="x:fish()"/>
<xsl:text>
</xsl:text>
</xsl:template>
</xsl:stylesheet>
iona% xsltproc xsl/fish.xsl vhost/blog.libfsm.org/index.xhtml5
123
iona%
I would expect my <xsl:value-of select="x:fish()"/> there to give the
same result as under xsltproc. But running the same under nginx gives:
xmlXPathCompOpEval: function fish not found
XPath error : Unregistered function
xmlXPathCompiledEval: evaluation failed
runtime error: file /home/kate/svn/www/xsl/fish.xsl line 19 element value-of
XPath evaluation returned no result.
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.
I'm using nginx 1.4.1, which is linked to the same libexslt as my xsltproc.
Any suggestions, please?
--
Kate
More information about the nginx
mailing list