Python toolkit for generation of output for the web
Genshi is a Python library that provides an integrated set of components for parsing, generating, and processing HTML, XML or other textual content for output generation on the web.
The main feature is a template language that is smart about markup: unlike conventional template languages that only deal with bytes and (if you're lucky) characters, Genshi knows the difference between tags, attributes, and actual text nodes, and uses that knowledge to your advantage. For example:
- Intelligent automatic escaping greatly reduces the risk of opening up your site to cross-site scripting attacks (XSS).
- Template directives are often less verbose than those in most other template languages, as they can be attached directly to the elements they act upon.
- Independence from a specific serialization format lets you instantly switch between generating well-formed HTML 4.01 and XHTML 1.0 (or other formats).
- Stream-based filtering allows you to apply various transformations as a template is being processed, without having to parse and serialize the output again.
- Match templates let you enforce a common structure on template output, and more. This, in combination with XInclude support, is used instead of the more rigid inheritance feature commonly found in other template languages.
For those cases where you don't want to generate markup, Genshi also provides a simple text-based template language.
- Genshi tutorial
- Frequently asked questions
- What people say about Genshi
- Some performance numbers
- Projects extending Genshi
- Who is using Genshi?
- User Guide (0.6 | 0.5 | 0.4 | 0.3)
- API Documentation (0.6 | 0.5 | 0.4 | 0.3)
- Recipes for using Genshi
- Helper functions for use in templates
- Slides from Chris´ talk on Genshi at EuroPython 2007
Please note that the Genshi source tarballs come with comprehensive HTML documentation, encompassing both the generated API documentation and the user guide. The API documentation (courtesy of Epydoc) in particular is a lot better than the version you find here.
The Subversion repository can be accessed via: