Welcome! Log In Create A New Profile

Advanced

XSLT Parameter parsing

Laurence Rowe
July 30, 2010 10:44AM
XSLT parameter parsing currently allows paramters to be passed one per
line or multiple per line separated by a colon (:).
http://wiki.nginx.org/NginxHttpXsltModule#xslt_stylesheet

location / {
xslt_stylesheet /site/xslt/one.xslt
$arg_xslt_params
param1='$value1': param2=value2
param3=value3;
}

This has the unfortunate effect of preventing xpath parameters being
passed as url parameters when they contain a colon (fairly common in
xpath as a namespace or axis specififer). Consider the following
configuration:

location / {
xslt_stylesheet filter.xsl
xpath=$arg_xpath;
}

I would like to be able to call call the url
/doc.xml?xpath=ancestor-or-self::entry, but the current parameter
parsing code interprets this as multiple invalid parameters
``xpath=ancestor-or-self``, ````, ``entry``. As far as I can tell
there is no way to substitute ":" for "%3A" in a variable.

The attached patch removes support for specifying multiple parameters
in a single line. You may still supply multiple parameters to an xslt
by supplying one per line. (I've split the patch into two changesets
for readability.)

As an alternative it may be possible to preserve the current behaviour
by splitting parameters before the call to ngx_http_complex_value
which performs the variable substitution, however I was unable to work
out how to do this myself.

Laurence
_______________________________________________
nginx-devel mailing list
nginx-devel@nginx.org
http://nginx.org/mailman/listinfo/nginx-devel
Subject Author Views Posted

XSLT Parameter parsing Attachments

Laurence Rowe 2983 July 30, 2010 10:44AM

Re: XSLT Parameter parsing

Maxim Dounin 891 September 21, 2010 11:26PM



Sorry, you do not have permission to post/reply in this forum.

Online Users

Guests: 60
Record Number of Users: 6 on February 13, 2018
Record Number of Guests: 421 on December 02, 2018
Powered by nginx      Powered by FreeBSD      PHP Powered      Powered by MariaDB      ipv6 ready