This article uses bare URLs, which are uninformative and vulnerable to link rot. Please consider converting them to full citations to ensure the article remains verifiable and maintains a consistent citation style. Several templates and tools are available to assist in formatting, such as reFill (documentation) and Citation bot (documentation). (August 2022) (Learn how and when to remove this message) |
Developer(s) | Paul Everitt, Laurence Rowe and Martin Aspeli |
---|---|
Stable release | 1.1.1 / March 21, 2015; 9 years ago (2015-03-21) |
Preview release | e917d54922 / May 20, 2015; 9 years ago (2015-05-20) |
Operating system | Cross-platform |
Platform | Python |
License | New BSD |
Website | diazo |
Diazo, previously named xdv, is a general-purpose, open source website theming tool. It is written in Python and generates XSLT. Diazo creates a separation between theme pages (static HTML) and transformation rules (Diazo's own domain specific language based in XML), allowing web designers to work on templates in plain HTML, without knowledge of XSLT or special template-related codes.
Diazo creates a themed site by using user-defined rules to combine vanilla content from a dynamic website together with a static HTML theme. The rules file (conventionally named rules.xml
) has directives which, for example, may replace the contents of an HTML node in the theme with the contents of one in the content.
Web server support
The Diazo compiler generates XSLT, which can be deployed on any proxying web server with an XSLT processor such as Apache (using mod_transform), Varnish, or WSGI.
WSGI also has more direct Diazo support: the DiazoMiddleware filter will compile and cache Diazo themes on the fly.
Nginx has an XSLT processor, but, as of March 2012, it requires the unthemed website (the content) to use strict XHTML. The strict requirement can be relaxed, however, if a patched version of Nginx is used.
History and naming
Diazo was originally a reimplementation of an earlier software called Deliverance. Where Deliverance would handle the HTML transformation in Python, Diazo generates XSLT which can then be used to defer the actual transformation to faster XSLT engines.
The name change to Diazo (from xdv) was announced at the Plone conference 2010. A major motivation for the name change was to reduce ambiguity, as the XDV name was used by both collective.xdv
(a Plone-specific theming package, now called plone.app.theming
) and by the stand-alone XDV tools (now called Diazo). Also dv.xdvserver
was renamed to DiazoMiddleware.
Diazo is based on DVNG, a prototype version of xdv. Diazo originally implemented only a subset of the features in Deliverance, but now has similar features, although their configuration language is not completely compatible. Diazo has become the de facto standard for theming in Plone 4 and is included in Plone 4.2 and later.
Directives
The basic directives of Diazo include: replace
(replace a node or attribute in the theme with that from content), before
and after
(insert a node before or after another), drop
(delete a node or attribute), strip
(remove a tag but not its child nodes), merge
, and copy
.
A node, node's children or attribute, can be selected with either XPath selectors or CSS3 selectors. CSS selectors are replaced by the equivalent XPath selector during the pre-processing step of the compiler.
Advanced features include: conditions based on content nodes or paths, with grouping and nesting; multiple, conditional themes; modifying the theme or content on the fly; inline XSL directives; Doctype changes; XInclude protocol.
References
- "Diazo: Diazo implements a Deliverance like language using a pure XSLT engine. With Diazo, you "compile" your theme and ruleset in one step, then use a superfast/Simple transform on each request thereafter. Alternatively, compile your theme during development, check it into version control, and not touch Diazo during deployment".
- "Plone/Diazo". GitHub. 12 November 2021.
- http://wiki.nginx.org/HttpXsltModule
- nginx-xslt-html-parser Archived 2014-09-06 at the Wayback Machine, Laurence Rowe
- Nginx with HTML xslt support (html-xslt on Google code), patches Nginx 0.7.67 from 15 June 2010
External links
- Diazo.org - official homepage