[ZPT] XSLT version of TAL, pushing caching to the client

Brad Clements bkc at murkworks.com
Fri Jul 22 15:06:16 EDT 2005

(leaving this on the zpt list)

On 22 Jul 2005 at 15:30, David Pratt wrote:

> That could be true. I am not sure when you to go from content to zpt to 
> xml + xslt + css that it would be faster than something already 
> rendered in xhtml + css (and js). With what I am thinking the way 
> things may work in future, you may not have to worry about zpt at all 
> and mod_python is very fast - at least this is where I see things 
> going. There is even an effort called mod_zope underway.  My experience 
> with xslt is that the templates can also be complex depending on the 
> output. Docbook xsl come to mind for me and many people have not 
> embraced xslt despite it being really great. It is just different and 
> unfamiliar to many. I think what you are speaking of is very 
> interesting, for sure and I do not want to discourage you in the least. 
>   I remember the pipeline ideas BitFlux had for its CMS and also being 
> excited about the possibilities that it brought to the table. There is 
> all kinds of room for interesting ideas and exploration to satisfy 
> anyone in zope ;-)

I think my point is being missed.

I'm suggesting TAL2XSLT as a "pre-processing step" for templates, not a 
rendering step for each web request.

Yes, XSLT is difficult for some folks to understand. So, let them use TAL 
and METAL to describe the layout of their pages.

Then, take those TAL/METAL  files and convert them to XSLT templates. 
This conversion would be done only when the templates change, not on 
every web request.

Then, on each web request some "xml blob" is created to serve as the 
"TALES context" and fed to the previously generated xslt.

The "fed to xslt" step either occurs on the server (for old clients), or on 
the client.  When done on the client, the client can cache the xslt.

Ultimately, you're having the client cache the un-rendered page template, 
then on each request just sending back the appropriate TALES context.


Depending on how your templates are structured, sub-page components 
could also be cached. For example, the infoset that describes the 
navigation hierarchy for your site could be completely cached on the 

Example, if you have a "blog roll" that appears in a column on every page 
of your site, that blog roll  would be cached on the client. It would not be 
re-rendered of every web request.


This "design pattern" (ahem.. ) is not specific to Zope or any other web 

I do this all the time now, but I hand-write my xslt files.

I'm suggesting that TAL/METAL would make the xslt part easier to write.

Brad Clements,                bkc at murkworks.com    (315)268-1000
AOL-IM or SKYPE: BKClements

More information about the ZPT mailing list