Schematronic is… my first python application, not initially destined for production use, instead a paythway for learning python.
It uses CherryPy and a lot of ideas from pycoon and nexista.
Schematronic is… is a work-in-progress experimental python-powered Nexista port.
What does that mean? Schematronic uses a sitemap (or what I like to call a fence file) to dispatch requests to resources, commonly things like data (SQL or XML) and views (XSL). It meshes up loosely with the Cocoon concept of XML pipelines.
As of June 2008, progress with Schematronic has picked up substantially. I’m going to try and get an instance of Schematronic running on Google’s app engine. Should be interesting!
Schematronic Design
Initialization & Startup
The Schematronic Design centers around running as a WSGI application daemon. Upon startup, the sitemap and configuration will be loaded.
Runtime Requests
Each request will reference the persistent sitemap and configuration objects. Each request will generate a flow document which can be rendered out via XSL. I think that the foundry process of Nexista, which builds php files of the parsed XML data, can be done programmatically with python reflection, fast enough to bypass the foundry process. Along these lines, the Nexista handlers will be the most important modules to port, when getting Schematronic up and running.
WSGI Applications?
Should each of the handlers / components be WSGI applications?
Development
Development of Schematronic applications will be pretty much like Nexista apps, though a lot more “pythonic”. Loosely coupled, modular, and WSGI compatible… hopefully. Luckily there are already a bunch of WSGI middleware modules which might be usable for Schematronic.
Related Concepts
- Caching
- Authentication / Authorization / Sessions
- Error / Exception Handling
- Debugging
- XML Parsing
- RESTful Request Routing
- Output buffering