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