[PATCH] HttpXsltModule files relative to location root
Maxim Dounin
mdounin at mdounin.ru
Mon Jan 2 23:26:03 UTC 2012
Hello!
On Mon, Jan 02, 2012 at 11:24:04PM +0100, SamB wrote:
> Hi,
> I've made a (relatively) simple patch for HttpXsltModule, that adds 2 new
> config directives and slightly modifies the xslt parsing process in
> HttpXsltModule:
>
> xslt_use_root - enables new xslt file location mode. If enabled
> non-absolute filenames are being located relatively to root location (if
> root defined without variables), and not relatively to nginx work
> directory. To achieve this xslt file parsing has been moved from directive
> processing routine, to merge routine and file location has been extended
> accordingly.
> This makes xslt files deploying easier, especially when deploying beta
> files (in testing) to production site. Before it has been necessary to
> modify file paths to match production site config, including modification
> of xslt include/import directives urls, after enabling it, simple file copy
> + nginx restart is enough.
This isn't taking into account root with variables, as well as
alias used instead of root. (And the patch doesn't even provide
any diagnostics for the case when it's not going to work.) Apart
from this, you probably don't want your xslt files to be exposed
under document root for security reasons.
I believe correct solution for the use case in question would be
some form of configuration macros to set both document root and
location of xslt files from the common prefix. Right now it may
be easily done with trivial external text processing.
> xslt_stylesheet_param - this is equivalent of xslt parameter passed to
> xslt_stylesheet, but this works independently and globally. Implemented as
> configuration directive processing, location parameters merging, and
> finally xslt stylesheet parameters merging.
> Again, xslt configuration is a bit simpler because 'common' xslt variables
> don't need to be configured for each xslt_stylesheet, but can be defined
> globally as needed.
This may be intresting, but:
1. One change at a time, please. There is no way to accept/review
changes which are mixed with other changes. And no unrelated
changes, please. If you want change to happen, submit it
explicitly as a separate patch.
2. Please follow coding style. There is a lot of style violations
in your patch.
3. You merge params with ones specified at previous levels. This
is incorrect approach, it should follow the same model as other
array-type variables, i.e. it should be inherited from previous
levels unless there are own params at the level in question.
Maxim Dounin
More information about the nginx-devel
mailing list