On Thu, Nov 04, 2010 at 08:42:01AM -0400, Jérôme Carretero wrote:
> On Mon, 01 Nov 2010 17:14:30 +0100
> Stefan Behnel <[email protected]> wrote:
> 
> > Jérôme Carretero, 01.11.2010 13:38:
> > > libxslt uses a xsltMaxDepth variable (global...) to limit recursion,
> > >   and I used to increase it when processing some big files (for instance, 
> > > DocBook containing tables spanning over dozens of pages).
> > > xsltproc --maxdepth 10000 ....
> > >
> > > At the moment, lxml does not touch this value.
> > >
> > > Maybe providing a lxml.etree.XSLT.maxdepth property would not be too 
> > > complicated ?
> > 
> > Such a local property doesn't work well for a global setting, and global 
> > settings are always evil. Isn't there a per-call setting for this?
> 
> Attached is a libxslt patch that makes the max template depth an attribute of 
> the transform context and not a global variable.
> 
> Comments ?
[...]
> --- a/libxslt/xslt.h
> +++ b/libxslt/xslt.h
> @@ -55,13 +55,6 @@ extern "C" {
>   XML_PARSE_NOENT | XML_PARSE_DTDLOAD | XML_PARSE_DTDATTR | XML_PARSE_NOCDATA
>  
>  /**
> - * xsltMaxDepth:
> - *
> - * This value is used to detect templates loops.
> - */
> -XSLTPUBVAR int xsltMaxDepth;

  That is not possible, it's a public variable, we can't remove it
it breaks API and ABI if we do.
  I'm not sure that adding a second global variable will help
On the other hand a call allowing to set those
  +       int maxTemplateDepth;
  +       int maxTemplateVars;
in a given transformation context is fine by me. I.e. the patch is
good in general, but intialization should still be done with
xsltMaxDepth, but provide a call allowing to set up new values
for a transformation context (not strictly needed since it a global
structure, but it's cleaner).

Daniel


-- 
Daniel Veillard      | libxml Gnome XML XSLT toolkit  http://xmlsoft.org/
[email protected]  | Rpmfind RPM search engine http://rpmfind.net/
http://veillard.com/ | virtualization library  http://libvirt.org/
_______________________________________________
xslt mailing list, project page http://xmlsoft.org/XSLT/
[email protected]
http://mail.gnome.org/mailman/listinfo/xslt

Reply via email to