[Zope3-dev] Re: Input encoding of a PageTemplateFile

Dmitry Vasiliev lists at hlabs.spb.ru
Wed Aug 10 10:14:52 EDT 2005


Fred Drake wrote:
> On 7/22/05, Dmitry Vasiliev <lists at hlabs.spb.ru> wrote:
> 
>>I think about the following generic algorithm:
>>
>>1. Preparation stage. Content type and encoding are determining based on the
>><?xml?>/<meta> declarations. In case of the 'text/html' type and a not unicoded
>>content we decode the content. In case of the 'text/xml' type the parser takes
>>care of the encoding at the cooking stage. We can do it somewhere inside
>>PageTemplate.pt_edit()/PageTemplate.write() methods.
> 
> 
> This is probably right; I'll have to look at the code again.
> 
> 
>>2. Cooking stage. Nothing interested for our case.
> 
> 
> Wrong; this is when the "bytecode" is generated.  At this point, we
> can remove the encoding markers (since we've already used them for
> input).
> 
> 
>>3. Rendering stage. Now we can strip the <?xml?>/<meta> declarations. We can do
>>it somewhere inside PageTemplate.pt_render()/PageTempalte.__call__() methods.
> 
> 
> Rendering is the most costly stage, so we want to reduce the work done
> here.  Avoiding it entirely is best.  By removing the encoding markers
> at compilation time, we manage to have nothing else to do at this
> stage.

Ok. Now I think that all this can be done somewhere inside zope.tal. I need to 
write a proposal...

>>BTW, just curious why we need to read HTML files in the text mode (See
>>PageTemplateFile._read_file())?
> 
> 
> I don't remember, but it seemed important at the time.  It likely has
> something to do with newline normalization; the XML parser handles
> that for us since the XML specification requires it to, but the HTML
> parser doesn't bother.
> 
> I doubt this is important in practice, but may be relied on in the tests.

Maybe we can use "universal newlines" mode instead?

-- 
Dmitry Vasiliev (dima at hlabs.spb.ru)
     http://hlabs.spb.ru


More information about the Zope3-dev mailing list