You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@cocoon.apache.org by "Boisvert, Eric" <eb...@nrcan.gc.ca> on 2007/12/16 02:05:18 UTC

RE : RE : Does CInclude/Include transformers buffer incoming documents ?

>That's not quite true. Yes, you can write XSLT in a bad way (using
>XPaths starting with double slash for example), which indeed forces the
>whole document to be loaded. 
 
Well.. I stand corrected. Thank you for this information.  So the XSLT engine is smart enough to analyse the stylesheet and load a subset of the document (I'm impressed)
 
> It uses SAX to stream through the included documents 

ok. but is the thing buffered (as a character buffer) in memory before being parsed ?
 
thanks, and sorry for persistent questionning
 
Eric
 
 
________________________________

De: Joerg Heinicke [mailto:joerg.heinicke@gmx.de]
Date: sam. 2007-12-15 19:52
À: users@cocoon.apache.org
Objet : Re: RE : Does CInclude/Include transformers buffer incoming documents ?



On 15.12.2007 19:35 Uhr, Boisvert, Eric wrote:

> I agree in principle, this is how cocoon works, in theory. But, for
> example, as soon as one puts an XSLT transformer in the pipeline, the
> document is indeed read completly in memory (in a DOM structure) simply
> because XSLT (XPath) allows to reference any part of the document -
> which force the whole document to buffered in memory prior to execute XSLT.

That's not quite true. Yes, you can write XSLT in a bad way (using
XPaths starting with double slash for example), which indeed forces the
whole document to be loaded. But if you write it in a good way the XSLT
processors have some optimizations to only load the most necessary parts
of the document.

> Now I'm redesigning the architecture and exploring the idea of using
> Cinclude to dispatch WFS queries and I was afraid Cinclude was
> 'buffering' the document in memory

 From the implementation of the CIncludeTransformer: It uses SAX to
stream through the included documents - except when you use the select
attribute. Then it creates a DOM and executes the select on it.

Joerg

---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscribe@cocoon.apache.org
For additional commands, e-mail: users-help@cocoon.apache.org




---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscribe@cocoon.apache.org
For additional commands, e-mail: users-help@cocoon.apache.org


Re: RE : RE : Does CInclude/Include transformers buffer incoming documents ?

Posted by Joerg Heinicke <jo...@gmx.de>.
On 15.12.2007 20:05 Uhr, Boisvert, Eric wrote:

>> That's not quite true. Yes, you can write XSLT in a bad way (using
>> XPaths starting with double slash for example), which indeed forces the
>> whole document to be loaded. 
>  
> Well.. I stand corrected. Thank you for this information.  So the XSLT engine is smart enough to analyse the stylesheet and load a subset of the document (I'm impressed)

You can read at http://wiki.apache.org/cocoon/NoMoreDtmIdError for an 
example where changing the XSLT fixed such an issue.

>> It uses SAX to stream through the included documents 
> 
> ok. but is the thing buffered (as a character buffer) in memory before being parsed ?

 From what I understand it is not by default. Only in case of using 
cached-include element instead of just the include element the stream is 
cached. So you really should be fine with it.

Joerg

---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscribe@cocoon.apache.org
For additional commands, e-mail: users-help@cocoon.apache.org