Lee Brown
administrator at leebrown.org
Mon Apr 17 12:36:34 EDT 2006
Greetings! This is the code for a Mod Python output filter that performs an XSLT transform on XML data that I published a few weeks ago. I've restructured it as an example application of the filter template: from mod_python import apache from cStringIO import StringIO import lxml.etree import time name = 'LXML' timestring = 'Time to process XML/XSLT files using %s: %.3f milliseconds (%s pages per second) [%s pass]\n' xsltfile = open('c:/webdev/sites/crashtest/templates/template.xslt', 'rU') styledoc = lxml.etree.parse(StringIO(xsltfile.read())) transformer = lxml.etree.XSLT(styledoc) xsltfile.close() def outputfilter (filter): try: streambuffer = filter.req.streambuffer except AttributeError: filter.req.streambuffer = StringIO() streambuffer = filter.req.streambuffer filter.req.start = time.clock() filter.req.passes = 0 streamlet = filter.read() while streamlet: filter.req.passes += 1 streambuffer.write(streamlet.replace('\r\n', '\n')) streamlet = filter.read() if streamlet is None: doc = lxml.etree.parse(streambuffer) doc.xinclude() result = str(transformer(doc)) end = time.clock() start = filter.req.start passes = filter.req.passes ms = (end-start)*1000 pps = int(1/(end-start)) timestamp = timestring % (name, ms, pps, passes) filter.write(result.replace('benchmark', timestamp)) filter.close() Best Regards, Lee E. Brown (leebrown at leebrown.org) -------------- next part -------------- An HTML attachment was scrubbed... URL: http://mm_cfg_has_not_been_edited_to_set_host_domains/pipermail/mod_python/attachments/20060417/e494c7ad/attachment.html
|